| <!DOCTYPE html> |
| <html> |
|
|
| <head> |
| <title>PDF Upload</title> |
| <style> |
| :root { |
| --primary-color: #a0a0a0; |
| --background-color: #1a1a1a; |
| --card-background: #2d2d2d; |
| --text-color: #e0e0e0; |
| --border-radius: 12px; |
| --shadow: 0 4px 6px rgba(0, 0, 0, 0.3); |
| } |
| |
| body { |
| font-family: 'Segoe UI', Arial, sans-serif; |
| max-width: 900px; |
| margin: 0 auto; |
| padding: 20px; |
| background-color: var(--background-color); |
| color: var(--text-color); |
| } |
| |
| .card { |
| background: var(--card-background); |
| border-radius: var(--border-radius); |
| box-shadow: var(--shadow); |
| padding: 2rem; |
| margin: 2rem 0; |
| } |
| |
| .upload-form { |
| border: 2px dashed #404040; |
| padding: 2rem; |
| text-align: center; |
| margin: 1.5rem 0; |
| border-radius: var(--border-radius); |
| background: #363636; |
| transition: all 0.3s ease; |
| } |
| |
| .upload-form:hover { |
| border-color: var(--primary-color); |
| background: #404040; |
| } |
| |
| .nav { |
| background: var(--card-background); |
| padding: 1rem; |
| border-radius: var(--border-radius); |
| box-shadow: var(--shadow); |
| margin-bottom: 2rem; |
| } |
| |
| .nav a { |
| margin-right: 20px; |
| text-decoration: none; |
| color: var(--primary-color); |
| font-weight: 500; |
| padding: 0.5rem 1rem; |
| border-radius: 6px; |
| transition: all 0.3s ease; |
| } |
| |
| .nav a:hover { |
| background: #363636; |
| } |
| |
| h1 { |
| color: var(--primary-color); |
| text-align: center; |
| margin-bottom: 1.5rem; |
| } |
| |
| input[type="file"] { |
| display: none; |
| } |
| |
| .file-upload-label { |
| display: inline-block; |
| padding: 12px 24px; |
| background: var(--primary-color); |
| color: white; |
| border-radius: 6px; |
| cursor: pointer; |
| transition: all 0.3s ease; |
| } |
| |
| .file-upload-label:hover { |
| background: #909090; |
| } |
| |
| .selected-file { |
| margin-top: 1rem; |
| color: #b0b0b0; |
| } |
| |
| button { |
| background: var(--primary-color); |
| color: white; |
| border: none; |
| padding: 12px 24px; |
| border-radius: 6px; |
| cursor: pointer; |
| font-size: 1rem; |
| transition: all 0.3s ease; |
| margin-top: 1rem; |
| } |
| |
| button:hover { |
| background: #909090; |
| transform: translateY(-2px); |
| } |
| |
| .status-message { |
| margin-top: 1rem; |
| padding: 1rem; |
| border-radius: 6px; |
| text-align: center; |
| } |
| |
| .success { |
| background: #2e4a3d; |
| color: #7ee2b8; |
| } |
| |
| .error { |
| background: #4a2e2e; |
| color: #e27e7e; |
| } |
| |
| .loading-placeholder { |
| display: none; |
| margin-top: 1rem; |
| color: #b0b0b0; |
| animation: pulse 1.5s infinite; |
| } |
| |
| @keyframes pulse { |
| 0% { |
| opacity: 0.6; |
| } |
| |
| 50% { |
| opacity: 1; |
| } |
| |
| 100% { |
| opacity: 0.6; |
| } |
| } |
| </style> |
| </head> |
|
|
| <body> |
| <div class="nav"> |
| <a href="/">Upload</a> |
| <a href="/chat">Chat</a> |
| </div> |
| <div class="card"> |
| <h1>Upload Documents</h1> |
| <div class="upload-form"> |
| <form action="/upload" method="post" enctype="multipart/form-data" id="uploadForm"> |
| <label for="file-upload" class="file-upload-label"> |
| Choose PDF Files |
| </label> |
| <input id="file-upload" type="file" name="file" accept=".pdf" multiple onchange="updateFileName(this)"> |
| <div id="selectedFile" class="selected-file"></div> |
| <div id="loadingPlaceholder" class="loading-placeholder">Processing file...</div> |
| <button type="submit" onclick="showLoading()">Upload</button> |
| </form> |
| </div> |
| </div> |
|
|
| <script> |
| function updateFileName(input) { |
| const fileNames = Array.from(input.files) |
| .map(file => file.name) |
| .join(', '); |
| document.getElementById('selectedFile').textContent = fileNames || 'No file selected'; |
| } |
| |
| function showLoading() { |
| if (document.getElementById('file-upload').files.length > 0) { |
| document.getElementById('selectedFile').style.display = 'none'; |
| document.getElementById('loadingPlaceholder').style.display = 'block'; |
| } |
| } |
| </script> |
| </body> |
|
|
| </html> |