-
{currentFile ? currentFile.name : 'Uploading…'}
+
+ {currentFile ? currentFile.name : 'Envoi…'}
{progress}%
-
{/if}
diff --git a/frontend/src/app.css b/frontend/src/app.css
index 59240d2..23111b5 100644
--- a/frontend/src/app.css
+++ b/frontend/src/app.css
@@ -11,35 +11,10 @@
body {
@apply bg-base text-ink font-sans;
min-height: 100vh;
- background-image:
- radial-gradient(1200px 600px at 15% -10%, rgba(91, 140, 255, 0.14), transparent 60%),
- radial-gradient(1000px 500px at 100% 0%, rgba(91, 140, 255, 0.08), transparent 55%);
- background-attachment: fixed;
}
::selection {
- background: rgba(91, 140, 255, 0.3);
- }
-
- ::-webkit-scrollbar {
- width: 10px;
- height: 10px;
- }
-
- ::-webkit-scrollbar-track {
- background: transparent;
- }
-
- ::-webkit-scrollbar-thumb {
- background: #232936;
- border-radius: 999px;
- border: 2px solid transparent;
- background-clip: content-box;
- }
-
- ::-webkit-scrollbar-thumb:hover {
- background: #2f3746;
- background-clip: content-box;
+ background: rgba(23, 23, 23, 0.08);
}
summary {
@@ -53,36 +28,28 @@
@layer components {
.card {
- @apply rounded-2xl border border-edge bg-surface/80 backdrop-blur-sm;
+ @apply rounded-lg border border-edge bg-surface;
}
.btn {
- @apply inline-flex items-center justify-center gap-2 rounded-xl text-sm font-semibold
- transition-all duration-150 disabled:cursor-not-allowed disabled:opacity-50;
+ @apply inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium
+ transition-colors disabled:cursor-not-allowed disabled:opacity-50;
}
.btn-primary {
- @apply bg-accent text-white hover:bg-accent-strong
- shadow-[0_8px_24px_-8px_rgba(91,140,255,0.7)];
+ @apply bg-accent text-white hover:bg-accent-strong;
}
.btn-ghost {
- @apply bg-transparent text-muted border border-edge hover:text-ink hover:border-muted/60;
+ @apply border border-edge bg-surface text-ink hover:bg-raised;
}
.btn-danger {
- @apply bg-transparent text-danger border border-danger/40 hover:bg-danger/10;
+ @apply border border-edge bg-surface text-danger hover:border-danger/40;
}
.field {
- @apply w-full rounded-xl border border-edge bg-base/70 px-3.5 py-3 text-sm text-ink
- placeholder:text-muted/60 outline-none transition focus:border-accent focus:ring-2
- focus:ring-accent/20;
- }
-}
-
-@layer utilities {
- .text-gradient {
- @apply bg-gradient-to-r from-accent to-[#a78bfa] bg-clip-text text-transparent;
+ @apply w-full rounded-md border border-edge bg-surface px-3 py-2.5 text-sm text-ink
+ placeholder:text-muted outline-none transition-colors focus:border-ink;
}
}
diff --git a/frontend/src/components/Dropzone.svelte b/frontend/src/components/Dropzone.svelte
index 478be9e..dc415fc 100644
--- a/frontend/src/components/Dropzone.svelte
+++ b/frontend/src/components/Dropzone.svelte
@@ -50,8 +50,7 @@
-
-
diff --git a/frontend/src/components/FileList.svelte b/frontend/src/components/FileList.svelte
index 74a7171..f9859c4 100644
--- a/frontend/src/components/FileList.svelte
+++ b/frontend/src/components/FileList.svelte
@@ -8,22 +8,22 @@
async function onDelete(item) {
const ok = window.confirm(
- `Delete "${item.originalName || item.downloadName}" permanently? This cannot be undone.`
+ `Supprimer définitivement « ${item.originalName || item.downloadName} » ?`
);
if (!ok) return;
try {
await deleteFile(item);
removeUpload(item.id);
- dispatch('notify', { message: 'File deleted.', kind: 'success' });
+ dispatch('notify', { message: 'Fichier supprimé.', kind: 'success' });
} catch (e) {
- dispatch('notify', { message: e.message || 'Deletion failed.', kind: 'error' });
+ dispatch('notify', { message: e.message || 'Suppression impossible.', kind: 'error' });
}
}
function onClear() {
if ($uploads.length === 0) return;
const ok = window.confirm(
- 'Clear this list? This only removes entries from THIS browser. Files on the server are not touched.'
+ 'Vider cette liste ? Seules les entrées de CE navigateur sont supprimées. Les fichiers restent sur le serveur.'
);
if (!ok) return;
clearUploads();
@@ -33,33 +33,37 @@
-
Your files
+ Fichiers
{#if $uploads.length}
- {$uploads.length} file{$uploads.length === 1 ? '' : 's'}
+ {$uploads.length}
{/if}
{#if $uploads.length}
-
{#if $uploads.length}
-
+
{#each $uploads as item (item.id)}
onDelete(e.detail)} />
{/each}
{:else}
-
-
{/if}
diff --git a/frontend/src/components/FileRow.svelte b/frontend/src/components/FileRow.svelte
index 7268064..c26c498 100644
--- a/frontend/src/components/FileRow.svelte
+++ b/frontend/src/components/FileRow.svelte
@@ -3,8 +3,6 @@
import {
forcedDownloadUrl,
downloadUrl,
- displayName,
- fileExtension,
formatBytes,
formatDate,
copyText
@@ -16,8 +14,7 @@
let copied = false;
- $: name = displayName(item);
- $: ext = fileExtension(item);
+ $: name = item.originalName || item.downloadName || 'file';
async function copy() {
await copyText(downloadUrl(item));
@@ -28,27 +25,21 @@
-
-