feat: FilePond production hardening — extension-based validation, server-side size limits (2GB), annexe validation, drop accept attributes, FilePond file styling

This commit is contained in:
Pontoporeia
2026-05-10 20:41:37 +02:00
parent 7b5f3efe40
commit 8db7b6e9eb
23 changed files with 4770 additions and 216 deletions

View File

@@ -546,24 +546,41 @@
margin-bottom: 0;
}
/* Drop area panel */
.filepond--panel-root {
background: var(--bg-secondary);
border: 1px dashed var(--border-primary);
border: 2px dashed var(--border-primary);
border-radius: var(--radius);
}
/* Drop label text */
.filepond--drop-label {
color: var(--text-secondary);
font-size: var(--step--1);
}
/* "Browse" link */
.filepond--label-action {
color: var(--accent-primary);
text-decoration: underline;
text-decoration-color: var(--accent-primary);
}
/* File item — keep white for contrast against drop area */
.filepond--item-panel {
background: var(--bg-secondary);
background-color: var(--bg-primary);
border: 1px solid var(--border-primary);
border-radius: var(--radius);
}
/* File item text — dark on white */
.filepond--file {
color: var(--text-primary);
background-color: var(--bg-tertiary);
border: 1px solid var(--accent-primary);
}
.filepond--file .filepond--file-status {
color: var(--text-secondary);
}
.filepond--file-info-main {
@@ -574,12 +591,41 @@
color: var(--text-tertiary);
}
/* Action buttons — dark background, white icons */
.filepond--file-action-button {
color: var(--text-secondary);
cursor: pointer;
color: #ffffff;
background-color: rgba(0, 0, 0, 0.45);
}
.filepond--file-action-button:hover {
color: var(--error);
.filepond--file-action-button:hover,
.filepond--file-action-button:focus {
color: #ffffff;
background-color: rgba(0, 0, 0, 0.65);
box-shadow: 0 0 0 0.125em rgba(0, 0, 0, 0.2);
}
/* Progress indicator */
.filepond--progress-indicator {
color: #ffffff;
}
/* Drag-over highlight */
.filepond--hopper[data-hopper-state="drag-over"] .filepond--panel-root {
border-color: var(--accent-primary);
background: var(--accent-muted);
}
/* Error state */
[data-filepond-item-state*="error"] .filepond--item-panel,
[data-filepond-item-state*="invalid"] .filepond--item-panel {
background-color: var(--error-muted-bg);
border-color: var(--error);
}
/* Processing complete */
[data-filepond-item-state="processing-complete"] .filepond--item-panel {
background-color: var(--bg-primary);
}
/* ── Existing-files list (edit form) ─────────────────────────────────────── */
@@ -1075,7 +1121,7 @@ a.recap-file-name:hover {
background: var(--bg-primary);
border: 1px solid var(--border-primary);
border-radius: var(--radius);
box-shadow: 0 4px 16px rgba(0,0,0,0.12);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
max-height: 220px;
overflow-y: auto;
display: none;