diff --git a/dist/fitra-darwin-amd64 b/dist/fitra-darwin-amd64 index 6e5909a..aeb9f0a 100755 Binary files a/dist/fitra-darwin-amd64 and b/dist/fitra-darwin-amd64 differ diff --git a/dist/fitra-darwin-arm64 b/dist/fitra-darwin-arm64 index 4ca9605..65b0a87 100755 Binary files a/dist/fitra-darwin-arm64 and b/dist/fitra-darwin-arm64 differ diff --git a/dist/fitra-linux-amd64 b/dist/fitra-linux-amd64 index cf7710a..15e8015 100755 Binary files a/dist/fitra-linux-amd64 and b/dist/fitra-linux-amd64 differ diff --git a/dist/fitra-linux-arm64 b/dist/fitra-linux-arm64 index 066f851..0896c65 100755 Binary files a/dist/fitra-linux-arm64 and b/dist/fitra-linux-arm64 differ diff --git a/static/main.css b/static/main.css index 875dc15..b307b22 100644 --- a/static/main.css +++ b/static/main.css @@ -785,3 +785,57 @@ pre code { .tab-layout { padding: 14px; } .tab-nav { position: static; } } + +/* Upload UI - aligned with app styles */ +.upload-card { + margin-top: 12px; + padding: 24px; + background: #ffffff; + border: 1px solid #e2e8f0; + border-radius: 12px; + box-shadow: none; +} + +.upload-form .form-row { margin: 12px 0; } + +/* Status messages */ +.upload-status { margin-top: 10px; font-size: 0.95rem; color: #475569; } +.upload-status.success { color: #16a34a; } +.upload-status.error { color: #ef4444; } + +.upload-result { margin-top: 12px; word-break: break-all; } + +/* Buttons */ +.btn-primary { + appearance: none; + background: #3b82f6; + color: #ffffff; + border: 1px solid #3b82f6; + padding: 10px 16px; + border-radius: 10px; + cursor: pointer; + font-weight: 600; + font-size: 14px; + transition: all 0.15s ease; +} +.btn-primary:hover { background: #2563eb; border-color: #2563eb; } +.btn-primary[disabled] { opacity: 0.6; cursor: progress; } + +.btn-secondary { + appearance: none; + background: #f1f5f9; + color: #0f172a; + border: 1px solid #e2e8f0; + padding: 8px 12px; + border-radius: 8px; + cursor: pointer; + font-size: 13px; + font-weight: 600; + transition: all 0.15s ease; +} +.btn-secondary:hover { background: #e2e8f0; } + +/* Mobile adjustments */ +@media (max-width: 640px) { + .upload-card { padding: 16px; } +} diff --git a/views/index.html b/views/index.html index 8b6f3e2..95b7b6b 100644 --- a/views/index.html +++ b/views/index.html @@ -9,6 +9,7 @@ Guide + Upload Changelog About @@ -22,6 +23,12 @@ + + + {{template "web-upload" .}} + + + {{template "changelog" .}} diff --git a/views/layout.html b/views/layout.html index 17c811a..c1aa6bc 100644 --- a/views/layout.html +++ b/views/layout.html @@ -92,7 +92,7 @@ // Read initial state from hash const hash = window.location.hash.replace('#', ''); - if (hash === 'changelog' || hash === 'about' || hash === 'guide') { + if (hash === 'changelog' || hash === 'about' || hash === 'guide' || hash === 'upload') { activate(hash); } else { activate('guide'); diff --git a/views/partials/web-upload.html b/views/partials/web-upload.html new file mode 100644 index 0000000..a6c05f2 --- /dev/null +++ b/views/partials/web-upload.html @@ -0,0 +1,117 @@ +{{define "web-upload"}} +📤 Web Upload +Upload a file directly from your browser. Files are temporary and automatically deleted after 24 hours. + + + + + + + + Upload + + + + + + + File uploaded successfully! + + Download URL: + open + + + Copy link + + + + + +{{end}}
Upload a file directly from your browser. Files are temporary and automatically deleted after 24 hours.
File uploaded successfully!
+ Download URL: + open +