style(toast): reposition to bottom-center, solid bg, larger text, longer duration

This commit is contained in:
Pontoporeia
2026-04-30 16:00:19 +02:00
parent e8bf89d184
commit 34b2d073ee
7 changed files with 331 additions and 302 deletions

View File

@@ -19,6 +19,7 @@
## UI
- [x] **admin header** — replace "Déconnexion" text link with SVG sign-out icon (accessible via `aria-label` + `.sr-only` span)
- [x] **toast styling** — repositioned to bottom-center; solid `--bg-secondary` background; font bumped to `--step-0`; padding increased; visible duration extended to ~6.35 s; enter animation slides up from bottom
## Bug fixes
- [x] **smtp-test.php** — wrap `SmtpRelay::send()` in `try/catch SmtpSendException` so SMTP delivery failures (e.g. 550 recipient rejected) surface as a proper flash error instead of an uncaught exception/silent crash

View File

@@ -142,46 +142,48 @@
filter: brightness(0.9);
}
/* ── Toast messages (top-right, CSS-only auto-fade) ─────────────────── */
/* ── Toast messages (bottom-center, CSS-only auto-fade) ─────────────── */
#toast-region {
position: fixed;
top: var(--space-l);
right: var(--space-l);
bottom: var(--space-l);
left: 50%;
transform: translateX(-50%);
z-index: 10000;
display: flex;
flex-direction: column;
align-items: center;
gap: var(--space-xs);
pointer-events: none;
max-width: min(480px, calc(100vw - 2 * var(--space-l)));
width: max-content;
max-width: min(560px, calc(100vw - 2 * var(--space-l)));
}
.toast {
padding: var(--space-xs) var(--space-s);
border-radius: 6px;
font-size: var(--step--1);
border-left: 3px solid;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
padding: var(--space-s) var(--space-m);
border-radius: 8px;
font-size: var(--step-0);
border-left: 4px solid;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.25);
pointer-events: auto;
backdrop-filter: blur(6px);
/* enter then fade out — total visible ~4.35 s */
/* enter then fade out — total visible ~6.35 s */
animation: toast-enter 0.35s ease-out,
toast-exit 0.4s ease-in 4s forwards;
toast-exit 0.5s ease-in 6s forwards;
}
.toast--error {
background: var(--accent-muted);
background: var(--bg-secondary);
border-color: var(--error);
color: var(--text-primary);
}
.toast--success {
background: var(--success-muted-bg);
background: var(--bg-secondary);
border-color: var(--success);
color: var(--text-primary);
}
@keyframes toast-enter {
from { opacity: 0; transform: translateY(-12px); }
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}

View File

@@ -187,7 +187,7 @@ header {
/* Top and bottom bars */
.navicon::before,
.navicon::after {
content: '';
content: "";
background: var(--accent-foreground);
display: block;
height: 2px;
@@ -196,8 +196,12 @@ header {
transition: all 0.3s ease-out;
}
.navicon::before { top: -7px; }
.navicon::after { bottom: -7px; }
.navicon::before {
top: -7px;
}
.navicon::after {
bottom: -7px;
}
/* ---- Mobile ---- */
@media screen and (max-width: 640px) {
@@ -240,7 +244,9 @@ header {
}
/* ---- Open state ---- */
.menu-btn:checked ~ nav[aria-label="Navigation principale"] .nav-mobile-links {
.menu-btn:checked
~ nav[aria-label="Navigation principale"]
.nav-mobile-links {
max-height: 300px;
}
@@ -259,16 +265,25 @@ header {
}
/* ---- Animate burger → X ---- */
.menu-btn:checked ~ nav[aria-label="Navigation principale"] .menu-icon .navicon {
.menu-btn:checked
~ nav[aria-label="Navigation principale"]
.menu-icon
.navicon {
background: transparent;
}
.menu-btn:checked ~ nav[aria-label="Navigation principale"] .menu-icon .navicon::before {
.menu-btn:checked
~ nav[aria-label="Navigation principale"]
.menu-icon
.navicon::before {
transform: rotate(-45deg);
top: 0;
}
.menu-btn:checked ~ nav[aria-label="Navigation principale"] .menu-icon .navicon::after {
.menu-btn:checked
~ nav[aria-label="Navigation principale"]
.menu-icon
.navicon::after {
transform: rotate(45deg);
bottom: 0;
}
@@ -448,3 +463,11 @@ details > summary {
details > summary::-webkit-details-marker {
display: none;
}
:where(video, audio, iframe) {
border: 1px solid var(--bg-primary);
border-radius: 15px;
}
audio::-webkit-media-controls-enclosure {
border-radius: 10px;
}

View File

@@ -292,7 +292,9 @@ aside figcaption {
border: none;
border-radius: 4px;
cursor: pointer;
transition: background 0.2s, opacity 0.2s;
transition:
background 0.2s,
opacity 0.2s;
margin-top: var(--space-3xs);
}

View File

@@ -8,3 +8,4 @@
{"source":"partage","action":"submit","status":"success","thesis_id":22,"identifier":"2025-019","author":"Lila Dubois, Karim Nassar","share_slug":"20260429-DZESJT6X","timestamp":"2026-04-30T11:45:36+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0"}
{"source":"partage","action":"submit","status":"success","thesis_id":23,"identifier":"2025-020","author":"Zoé Lambert","share_slug":"20260429-DZESJT6X","timestamp":"2026-04-30T11:46:49+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0"}
{"source":"partage","action":"submit","status":"success","thesis_id":24,"identifier":"2025-021","author":"Emma Renard","share_slug":"20260429-DZESJT6X","timestamp":"2026-04-30T11:49:49+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0"}
{"source":"partage","action":"submit","status":"success","thesis_id":25,"identifier":"2025-001","author":"Emma Renard","share_slug":"20260429-DZESJT6X","timestamp":"2026-04-30T12:17:35+00:00","ip":"127.0.0.1","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0"}

BIN
app/storage/xamxam.db-shm Normal file

Binary file not shown.

View File