From c7cb22f313c214d89c1b2b507ba5ece023780b7a Mon Sep 17 00:00:00 2001 From: Yvv Date: Sat, 28 Feb 2026 23:09:29 +0100 Subject: [PATCH] Design ludique arrondi + mobile responsive + fix IPv6 - ToolboxVignette: prop bullets[] remplace description, touch targets agrandis - Design arrondi: border-radius 16px cards, 20px pills, 12px inputs, no borders - Hover animations: translateY(-3px) + shadow, active states pour touch - SectionLayout: toolbox accordion mobile, pills scroll horizontal, responsive title/subtitle - app.vue: MoodSwitcher dans drawer mobile, header responsive, nav touch-friendly - Dashboard: grille 2-colonnes mobile, connect banner column layout, formula code scroll - Documents/decisions/mandates/protocols: cards responsive (padding, font-size, gap) - Login: touch targets 3rem min, iOS zoom prevention, responsive sizing - Modals: padding responsive sm:p-6 - Protocols: table compact mobile, proto items responsive - nuxt.config: host 0.0.0.0 pour fix IPv4/IPv6 binding Co-Authored-By: Claude Opus 4.6 --- backend/seed.py | 32 +- frontend/app/app.config.ts | 33 + frontend/app/app.vue | 204 +-- frontend/app/assets/css/moods.css | 166 ++- .../app/components/common/SectionLayout.vue | 229 ++-- .../app/components/common/ToolboxVignette.vue | 98 +- frontend/app/composables/useMood.ts | 4 +- frontend/app/pages/decisions/index.vue | 71 +- frontend/app/pages/documents/index.vue | 75 +- frontend/app/pages/index.vue | 358 +++-- frontend/app/pages/login.vue | 192 ++- frontend/app/pages/mandates/index.vue | 120 +- frontend/app/pages/protocols/index.vue | 1162 ++++++++++------- frontend/app/stores/decisions.ts | 2 +- frontend/nuxt.config.ts | 5 +- 15 files changed, 1730 insertions(+), 1021 deletions(-) create mode 100644 frontend/app/app.config.ts diff --git a/backend/seed.py b/backend/seed.py index 856bf02..a3a2a56 100644 --- a/backend/seed.py +++ b/backend/seed.py @@ -119,31 +119,37 @@ async def seed_voting_protocols( formulas: dict[str, FormulaConfig], ) -> dict[str, VotingProtocol]: protocols: dict[str, dict] = { - "Vote majoritaire": { + "Vote WoT standard": { "description": ( - "Vote binaire a majorite simple. Le seuil d'adoption " - "s'adapte dynamiquement au taux de participation via " - "la formule d'inertie WoT." + "Vote binaire (pour/contre) ouvert a tous les membres de la " + "toile de confiance. Le seuil d'adoption s'adapte au taux de " + "participation via l'inertie WoT : quasi-unanimite a faible " + "participation, majorite simple a forte mobilisation. " + "Utilise pour la Licence G1 et les textes fondateurs." ), "vote_type": "binary", "formula_config_id": formulas["Standard Licence G1"].id, "mode_params": "D30M50B.1G.2", }, - "Vote quadratique": { + "Vote forgeron (Smith)": { "description": ( - "Vote pondere par la racine carree des certifications. " - "Reduit l'influence des gros certificateurs et favorise " - "une participation large et diversifiee." + "Vote binaire avec double critere : seuil WoT standard + " + "seuil minimal de forgerons. Garantit que toute decision " + "impliquant les validateurs soit soutenue par les " + "operateurs du reseau. Utilise pour les engagements " + "forgerons et les decisions d'infrastructure." ), "vote_type": "binary", "formula_config_id": formulas["Forgeron avec Smith"].id, "mode_params": "D30M50B.1G.2S.1", }, - "Vote permanent": { + "Vote Comite Technique": { "description": ( - "Vote continu sans date de fin. Le resultat evolue en " - "temps reel avec chaque nouveau vote. Adapte aux documents " - "de reference sous revision permanente." + "Vote binaire avec critere TechComm obligatoire. " + "Reserve aux decisions techniques critiques : runtime " + "upgrades, modifications de parametres on-chain, " + "approbation de code. Le Comite Technique doit atteindre " + "un seuil minimal independamment du vote communautaire." ), "vote_type": "binary", "formula_config_id": formulas["Comite Tech"].id, @@ -912,7 +918,7 @@ async def run_seed(): await seed_votes_on_items( session, doc_forgeron, - protocols["Vote majoritaire"], + protocols["Vote WoT standard"], voters, ) diff --git a/frontend/app/app.config.ts b/frontend/app/app.config.ts new file mode 100644 index 0000000..1971fd2 --- /dev/null +++ b/frontend/app/app.config.ts @@ -0,0 +1,33 @@ +export default defineAppConfig({ + ui: { + button: { + variants: { + variant: { + solid: 'border-0', + outline: 'border-0', + soft: 'border-0', + subtle: 'border-0', + ghost: 'border-0', + link: 'border-0', + }, + }, + }, + badge: { + variants: { + variant: { + solid: 'border-0', + outline: 'border-0', + soft: 'border-0', + subtle: 'border-0', + }, + }, + }, + input: { + variants: { + variant: { + outline: 'border-0 ring-1 ring-[var(--mood-input-border)] focus:ring-[var(--mood-input-focus)]', + }, + }, + }, + }, +}) diff --git a/frontend/app/app.vue b/frontend/app/app.vue index 2bc7c25..e6f7378 100644 --- a/frontend/app/app.vue +++ b/frontend/app/app.vue @@ -87,7 +87,7 @@ function isActive(to: string) { aria-label="Ouvrir le menu" @click="mobileMenuOpen = true" > - + - +