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 ## UI
- [x] **admin header** — replace "Déconnexion" text link with SVG sign-out icon (accessible via `aria-label` + `.sr-only` span) - [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 ## 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 - [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); filter: brightness(0.9);
} }
/* ── Toast messages (top-right, CSS-only auto-fade) ─────────────────── */ /* ── Toast messages (bottom-center, CSS-only auto-fade) ─────────────── */
#toast-region { #toast-region {
position: fixed; position: fixed;
top: var(--space-l); bottom: var(--space-l);
right: var(--space-l); left: 50%;
transform: translateX(-50%);
z-index: 10000; z-index: 10000;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center;
gap: var(--space-xs); gap: var(--space-xs);
pointer-events: none; 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 { .toast {
padding: var(--space-xs) var(--space-s); padding: var(--space-s) var(--space-m);
border-radius: 6px; border-radius: 8px;
font-size: var(--step--1); font-size: var(--step-0);
border-left: 3px solid; border-left: 4px solid;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); box-shadow: 0 6px 24px rgba(0, 0, 0, 0.25);
pointer-events: auto; pointer-events: auto;
backdrop-filter: blur(6px); /* enter then fade out — total visible ~6.35 s */
/* enter then fade out — total visible ~4.35 s */
animation: toast-enter 0.35s ease-out, 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 { .toast--error {
background: var(--accent-muted); background: var(--bg-secondary);
border-color: var(--error); border-color: var(--error);
color: var(--text-primary); color: var(--text-primary);
} }
.toast--success { .toast--success {
background: var(--success-muted-bg); background: var(--bg-secondary);
border-color: var(--success); border-color: var(--success);
color: var(--text-primary); color: var(--text-primary);
} }
@keyframes toast-enter { @keyframes toast-enter {
from { opacity: 0; transform: translateY(-12px); } from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); } to { opacity: 1; transform: translateY(0); }
} }

View File

@@ -187,7 +187,7 @@ header {
/* Top and bottom bars */ /* Top and bottom bars */
.navicon::before, .navicon::before,
.navicon::after { .navicon::after {
content: ''; content: "";
background: var(--accent-foreground); background: var(--accent-foreground);
display: block; display: block;
height: 2px; height: 2px;
@@ -196,8 +196,12 @@ header {
transition: all 0.3s ease-out; transition: all 0.3s ease-out;
} }
.navicon::before { top: -7px; } .navicon::before {
.navicon::after { bottom: -7px; } top: -7px;
}
.navicon::after {
bottom: -7px;
}
/* ---- Mobile ---- */ /* ---- Mobile ---- */
@media screen and (max-width: 640px) { @media screen and (max-width: 640px) {
@@ -240,7 +244,9 @@ header {
} }
/* ---- Open state ---- */ /* ---- 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; max-height: 300px;
} }
@@ -259,16 +265,25 @@ header {
} }
/* ---- Animate burger → X ---- */ /* ---- 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; 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); transform: rotate(-45deg);
top: 0; 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); transform: rotate(45deg);
bottom: 0; bottom: 0;
} }
@@ -448,3 +463,11 @@ details > summary {
details > summary::-webkit-details-marker { details > summary::-webkit-details-marker {
display: none; 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: none;
border-radius: 4px; border-radius: 4px;
cursor: pointer; cursor: pointer;
transition: background 0.2s, opacity 0.2s; transition:
background 0.2s,
opacity 0.2s;
margin-top: var(--space-3xs); 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":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":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":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