mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 11:09:18 +02:00
style(toast): reposition to bottom-center, solid bg, larger text, longer duration
This commit is contained in:
1
TODO.md
1
TODO.md
@@ -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
|
||||
|
||||
@@ -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); }
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
BIN
app/storage/xamxam.db-shm
Normal file
Binary file not shown.
0
app/storage/xamxam.db-wal
Normal file
0
app/storage/xamxam.db-wal
Normal file
Reference in New Issue
Block a user