Palettes harmoniques, logo g breve (Decision), Protocoles promu

- Moods: palettes multi-teintes (secondary, tertiary par mood)
  Peps: corail/ocre/bleu electrique ; Zen: sauge/lavande/terre cuite
  Chagrine: violet/cyan/magenta/or ; Grave: ambre/cuivre/bleu acier
- Logo: gavel + g(Decision) — incompletude de Godel
- Dashboard: 4 cartes d'entree (Documents, Decisions, Protocoles, Mandats)
  chacune avec sa couleur propre
- Protocoles promu au meme rang que les autres sections
  (boite a outils de vote + workflows n8n via MCP)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-02-28 19:39:25 +01:00
parent 61a414d214
commit 9b6388a600
5 changed files with 169 additions and 133 deletions

View File

@@ -26,7 +26,7 @@ onMounted(async () => {
}
})
/** Entry cards — the 3 main doors. */
/** Entry cards — the 4 main doors. */
const entryCards = computed(() => [
{
key: 'documents',
@@ -37,6 +37,7 @@ const entryCards = computed(() => [
countLabel: `${documents.activeDocuments.length} actif${documents.activeDocuments.length > 1 ? 's' : ''}`,
totalLabel: `${documents.list.length} au total`,
description: 'Textes fondateurs sous vote permanent',
color: 'var(--mood-accent)',
},
{
key: 'decisions',
@@ -47,6 +48,18 @@ const entryCards = computed(() => [
countLabel: `${decisions.activeDecisions.length} en cours`,
totalLabel: `${decisions.list.length} au total`,
description: 'Processus de decision collectifs',
color: 'var(--mood-secondary, var(--mood-accent))',
},
{
key: 'protocoles',
title: 'Protocoles',
icon: 'i-lucide-settings',
to: '/protocols',
count: protocols.protocols.length,
countLabel: `${protocols.protocols.length} modalite${protocols.protocols.length > 1 ? 's' : ''}`,
totalLabel: 'Boite a outils de vote + workflows',
description: 'Modalites de vote, formules, workflows n8n',
color: 'var(--mood-tertiary, var(--mood-accent))',
},
{
key: 'mandats',
@@ -57,6 +70,7 @@ const entryCards = computed(() => [
countLabel: null,
totalLabel: null,
description: 'Un contexte, un objectif, une duree, une ou plusieurs nominations ; par defaut : nomination d\'un binome.',
color: 'var(--mood-success)',
},
])
@@ -91,7 +105,7 @@ function formatDate(dateStr: string): string {
<div class="dash">
<!-- Welcome -->
<div class="dash__welcome">
<h1 class="dash__title">Glibredecision</h1>
<h1 class="dash__title"><span class="dash__title-g">ğ</span><span class="dash__title-paren">(</span>Decision<span class="dash__title-paren">)</span></h1>
<p class="dash__subtitle">
Decisions collectives pour la communaute Duniter / G1
</p>
@@ -100,7 +114,7 @@ function formatDate(dateStr: string): string {
<!-- Entry cards -->
<div class="dash__entries">
<template v-if="loading">
<LoadingSkeleton v-for="i in 3" :key="i" :lines="3" card />
<LoadingSkeleton v-for="i in 4" :key="i" :lines="3" card />
</template>
<template v-else>
<NuxtLink
@@ -108,6 +122,7 @@ function formatDate(dateStr: string): string {
:key="card.key"
:to="card.to"
class="entry-card"
:style="{ '--card-color': card.color }"
>
<div class="entry-card__icon">
<UIcon :name="card.icon" class="text-xl" />
@@ -253,6 +268,13 @@ function formatDate(dateStr: string): string {
color: var(--mood-accent);
letter-spacing: -0.02em;
}
.dash__title-g {
font-style: italic;
}
.dash__title-paren {
font-weight: 300;
color: var(--mood-text-muted);
}
.dash__subtitle {
margin-top: 0.25rem;
font-size: 0.875rem;
@@ -280,7 +302,7 @@ function formatDate(dateStr: string): string {
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.entry-card:hover {
border-color: var(--mood-accent);
border-color: var(--card-color, var(--mood-accent));
box-shadow: 0 2px 8px var(--mood-shadow);
}
@@ -291,8 +313,8 @@ function formatDate(dateStr: string): string {
align-items: center;
justify-content: center;
border-radius: 6px;
background: var(--mood-accent-soft);
color: var(--mood-accent);
background: color-mix(in srgb, var(--card-color, var(--mood-accent)) 10%, transparent);
color: var(--card-color, var(--mood-accent));
margin-bottom: 0.25rem;
}
@@ -306,7 +328,7 @@ function formatDate(dateStr: string): string {
.entry-card__count {
font-size: 1.25rem;
font-weight: 800;
color: var(--mood-accent);
color: var(--card-color, var(--mood-accent));
line-height: 1;
}
@@ -331,7 +353,7 @@ function formatDate(dateStr: string): string {
}
.entry-card:hover .entry-card__arrow {
opacity: 1;
color: var(--mood-accent);
color: var(--card-color, var(--mood-accent));
}
/* --- Connect banner --- */