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:
@@ -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 --- */
|
||||
|
||||
@@ -57,9 +57,11 @@ onMounted(() => {
|
||||
<div class="login-card">
|
||||
<!-- Logo -->
|
||||
<div class="login-card__header">
|
||||
<span class="login-card__logo">G</span>
|
||||
<div class="login-card__logo">
|
||||
<UIcon name="i-lucide-gavel" class="text-xl" />
|
||||
</div>
|
||||
<h1 class="login-card__title">Connexion</h1>
|
||||
<p class="login-card__subtitle">Identite Duniter V2 · Ed25519</p>
|
||||
<p class="login-card__subtitle">ğ(Decision) · Duniter V2 · Ed25519</p>
|
||||
</div>
|
||||
|
||||
<!-- Steps indicator -->
|
||||
|
||||
Reference in New Issue
Block a user