v3 : inertie à cinq crans — interface (L10)

L'inertie se lit en crans, « 3 / 5 · moyenne » (très basse, basse,
moyenne, haute, très haute ; fr, en, es). Le sélecteur offre les cinq
crans, l'actuel marqué ; le changement se vote au cran de l'article.
L'article dit le passé de son inertie (vote ou réglage de départ).

« Réglages de la formule », en lecture seule, depuis l'en-tête du doc et
depuis le vote d'un article (onglet « Réglages » du panneau, dans
l'URL) : W et sa source, C, B, la participation habituelle (médiane ou
référence, sur combien de propositions, quand), et les cinq crans : M,
G, part exigée, voix pour exigées à la participation de la version
regardée (ou habituelle depuis l'en-tête).

Composants à part (InertiaPicker, FormulaSettings), branchés par
quelques lignes dans VoteView. La formule dépliée ne fait plus déborder
le panneau. e2e : C4 (cran de l'article dans la formule), C20 (réglages
et cinq crans), M1 (réglages lisibles sur mobile).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-10-30 16:42:11 +01:00
co-authored by Claude Opus 5.5
parent d762301706
commit db64405e1e
17 changed files with 671 additions and 109 deletions
+12 -2
View File
@@ -1,10 +1,20 @@
import { t } from './i18n/index.svelte';
import type { Proposal, Unit } from './types';
import type { Inertia, Proposal, Unit } from './types';
/** « 3 / 5 · moyenne ». */
export function inertiaLevel(k: Inertia): string {
return t('inertia.level', { k, name: t(`inertia.name.${k}`) });
}
/** « inertie 3 / 5 · moyenne ». */
export function inertiaBadge(k: Inertia): string {
return t('inertia.badge', { level: inertiaLevel(k) });
}
/** What a proposal is, in words, whatever its kind. */
export function titleOf(p: Proposal, unit: Unit | undefined): string {
if (p.kind === 'inertia' && p.inertiaTarget) {
return t('deep.inertia', { level: t(`inertia.level.${p.inertiaTarget}`) });
return t('deep.inertia', { level: inertiaLevel(p.inertiaTarget) });
}
if (p.kind === 'remove') return t('deep.removal', { title: unit?.inForce?.title ?? p.title });
return p.title;