- Accueil sobre, menu complet à gauche (Décisions, Docs de référence, Mandats, Protocoles), intro demandée, quatre sections, connexion Ğ1. - Lecteur : texte en vigueur en Literata, actions contextuelles par article (le vote, propositions, proposer), propositions en cours sous la « surface » avec leur niveau d'eau, aperçus « si les bien cotées passent » / « si tout passe », langue du texte fr/en/es (traductions éditoriales). - Panneau : vote pour/contre, seuil et formule (MathML), inertie et son changement (voté en inertie +), coquille sans vote, traduction, signalement de contradiction, historique des corrections. - trustinWallet (/acces) : groupes et membres, invitations à usage unique, administrateurs, retours d'usage. - Contrôles : vitest (markdown, catalogues, anti-lexique), Playwright C1–C10 + M1. - Sections du seed portées jusqu'à l'écran. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
48 lines
1022 B
Svelte
48 lines
1022 B
Svelte
<script lang="ts">
|
|
import { toasts } from '$lib/toast.svelte';
|
|
</script>
|
|
|
|
<div class="toasts" role="status" aria-live="polite">
|
|
{#each toasts.list as toast (toast.id)}
|
|
<button class="toast {toast.tone}" type="button" onclick={() => toasts.dismiss(toast.id)}>{toast.text}</button>
|
|
{/each}
|
|
</div>
|
|
|
|
<style>
|
|
.toasts {
|
|
position: fixed;
|
|
left: 50%;
|
|
bottom: 1.4rem;
|
|
transform: translateX(-50%);
|
|
display: grid;
|
|
gap: 0.5rem;
|
|
z-index: 60;
|
|
width: min(92vw, 30rem);
|
|
}
|
|
.toast {
|
|
border: 0;
|
|
border-radius: var(--r-card);
|
|
padding: 0.8rem 1.1rem;
|
|
background: var(--ink);
|
|
color: var(--bg);
|
|
font-weight: 650;
|
|
text-align: left;
|
|
box-shadow: var(--shadow-strong);
|
|
animation: rise 0.35s var(--ease);
|
|
}
|
|
.toast.rise {
|
|
background: var(--moss);
|
|
color: var(--on-water);
|
|
}
|
|
.toast.warn {
|
|
background: var(--ochre);
|
|
color: var(--on-water);
|
|
}
|
|
@keyframes rise {
|
|
from {
|
|
transform: translateY(12px);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
</style>
|