= ref('peps')
diff --git a/frontend/app/pages/decisions/index.vue b/frontend/app/pages/decisions/index.vue
index f5b64d8..13f7ed5 100644
--- a/frontend/app/pages/decisions/index.vue
+++ b/frontend/app/pages/decisions/index.vue
@@ -105,27 +105,28 @@ function formatDate(dateStr: string): string {
>
-
-
-
+
+
+
+
+
+ class="action-btn"
+ >
+
+ Nouvelle
+
@@ -175,14 +176,15 @@ function formatDate(dateStr: string): string {
-
+
{{ typeLabel(decision.decision_type) }}
-
+
{{ decision.steps.length }} etape{{ decision.steps.length !== 1 ? 's' : '' }}
+
{{ formatDate(decision.created_at) }}
@@ -305,9 +307,13 @@ function formatDate(dateStr: string): string {
}
.decision-card__date {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.25rem;
font-size: 0.75rem;
color: var(--mood-text-muted);
margin-left: auto;
+ opacity: 0.7;
}
@media (min-width: 640px) {
@@ -316,6 +322,86 @@ function formatDate(dateStr: string): string {
}
}
+.decision-card__type-badge {
+ font-size: 0.6875rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+ padding: 3px 10px;
+ border-radius: 20px;
+ background: var(--mood-accent-soft);
+ color: var(--mood-accent);
+}
+
+/* --- Modern search / sort / action --- */
+.search-field {
+ flex: 1;
+ min-width: 10rem;
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.625rem 1rem;
+ background: var(--mood-accent-soft);
+ border-radius: 12px;
+ transition: box-shadow 0.15s ease;
+}
+.search-field:focus-within {
+ box-shadow: 0 0 0 2.5px var(--mood-accent-soft);
+}
+.search-field__icon {
+ color: var(--mood-text-muted);
+ opacity: 0.5;
+ font-size: 0.875rem;
+ flex-shrink: 0;
+}
+.search-field__input {
+ flex: 1;
+ background: none;
+ font-size: 0.9375rem;
+ color: var(--mood-text);
+ min-width: 0;
+}
+.search-field__input::placeholder {
+ color: var(--mood-text-muted);
+ opacity: 0.4;
+}
+
+.sort-select {
+ padding: 0.625rem 1rem;
+ font-size: 0.875rem;
+ font-weight: 600;
+ color: var(--mood-text);
+ background: var(--mood-accent-soft);
+ border-radius: 12px;
+ cursor: pointer;
+ appearance: none;
+ -webkit-appearance: none;
+ min-width: 5.5rem;
+}
+
+.action-btn {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.375rem;
+ padding: 0.625rem 1.25rem;
+ font-size: 0.875rem;
+ font-weight: 700;
+ color: var(--mood-accent-text);
+ background: var(--mood-accent);
+ border-radius: 20px;
+ cursor: pointer;
+ text-decoration: none;
+ transition: transform 0.12s ease, box-shadow 0.12s ease;
+ white-space: nowrap;
+}
+.action-btn:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px var(--mood-shadow);
+}
+.action-btn:active {
+ transform: translateY(0);
+}
+
.toolbox-section-title {
font-size: 0.8125rem;
font-weight: 700;
diff --git a/frontend/app/pages/documents/index.vue b/frontend/app/pages/documents/index.vue
index e328c5e..337b8d0 100644
--- a/frontend/app/pages/documents/index.vue
+++ b/frontend/app/pages/documents/index.vue
@@ -163,27 +163,28 @@ async function createDocument() {
>
-
-
-
+
+
+
+
+
+ >
+
+ Nouveau
+
@@ -228,15 +229,16 @@ async function createDocument() {
-
+
{{ typeLabel(doc.doc_type) }}
-
+
v{{ doc.version }}
{{ doc.items_count }} item{{ doc.items_count !== 1 ? 's' : '' }}
+
{{ formatDate(doc.updated_at) }}
@@ -433,9 +435,13 @@ async function createDocument() {
}
.doc-card__date {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.25rem;
font-size: 0.75rem;
color: var(--mood-text-muted);
margin-left: auto;
+ opacity: 0.7;
}
@media (min-width: 640px) {
@@ -473,4 +479,83 @@ async function createDocument() {
font-size: 0.8125rem;
color: var(--mood-text-muted);
}
+
+/* --- Modern search / sort / action --- */
+.search-field {
+ flex: 1;
+ min-width: 10rem;
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.625rem 1rem;
+ background: var(--mood-accent-soft);
+ border-radius: 12px;
+ transition: box-shadow 0.15s ease;
+}
+.search-field:focus-within {
+ box-shadow: 0 0 0 2.5px var(--mood-accent-soft);
+}
+.search-field__icon {
+ color: var(--mood-text-muted);
+ opacity: 0.5;
+ font-size: 0.875rem;
+ flex-shrink: 0;
+}
+.search-field__input {
+ flex: 1;
+ background: none;
+ font-size: 0.9375rem;
+ color: var(--mood-text);
+ min-width: 0;
+}
+.search-field__input::placeholder {
+ color: var(--mood-text-muted);
+ opacity: 0.4;
+}
+
+.sort-select {
+ padding: 0.625rem 1rem;
+ font-size: 0.875rem;
+ font-weight: 600;
+ color: var(--mood-text);
+ background: var(--mood-accent-soft);
+ border-radius: 12px;
+ cursor: pointer;
+ appearance: none;
+ -webkit-appearance: none;
+ min-width: 5.5rem;
+}
+
+.action-btn {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.375rem;
+ padding: 0.625rem 1.25rem;
+ font-size: 0.875rem;
+ font-weight: 700;
+ color: var(--mood-accent-text);
+ background: var(--mood-accent);
+ border-radius: 20px;
+ cursor: pointer;
+ transition: transform 0.12s ease, box-shadow 0.12s ease;
+ white-space: nowrap;
+}
+.action-btn:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px var(--mood-shadow);
+}
+.action-btn:active {
+ transform: translateY(0);
+}
+
+.doc-card__type-badge {
+ font-size: 0.6875rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+ padding: 3px 10px;
+ border-radius: 20px;
+ background: var(--mood-accent-soft);
+ color: var(--mood-accent);
+}
diff --git a/frontend/app/pages/login.vue b/frontend/app/pages/login.vue
index 050806f..f57807c 100644
--- a/frontend/app/pages/login.vue
+++ b/frontend/app/pages/login.vue
@@ -62,8 +62,7 @@ onMounted(() => {
Connexion
- ğ(Decision)
- · Duniter V2 · Ed25519
+ Duniter V2 · Ed25519
@@ -173,26 +172,14 @@ onMounted(() => {
font-size: 1.75rem;
color: var(--mood-accent-text);
background: var(--mood-accent);
- border-radius: 16px;
+ border-radius: 14px;
margin-bottom: 1rem;
+ transform: rotate(-10deg);
}
.login-card__logo-icon {
transform: scaleX(-1);
}
-.login-card__title {
- font-size: 1.5rem;
- font-weight: 800;
- color: var(--mood-text);
- margin: 0;
-}
-
-@media (min-width: 640px) {
- .login-card__title {
- font-size: 1.75rem;
- }
-}
-
.login-card__subtitle {
font-size: 0.8125rem;
color: var(--mood-text-muted);
@@ -204,13 +191,18 @@ onMounted(() => {
font-size: 0.9375rem;
}
}
-.login-card__g {
- font-style: italic;
- font-weight: 700;
+
+.login-card__title {
+ font-size: 1.5rem;
+ font-weight: 800;
+ color: var(--mood-text);
+ margin: 0;
}
-.login-card__paren {
- font-weight: 300;
- opacity: 0.5;
+
+@media (min-width: 640px) {
+ .login-card__title {
+ font-size: 1.75rem;
+ }
}
/* Steps */
diff --git a/frontend/app/pages/mandates/index.vue b/frontend/app/pages/mandates/index.vue
index fa933c8..654bba7 100644
--- a/frontend/app/pages/mandates/index.vue
+++ b/frontend/app/pages/mandates/index.vue
@@ -140,27 +140,28 @@ async function handleCreate() {
>
-
-
-
+
+
+
+
+
+ >
+
+ Nouveau
+
@@ -248,9 +249,9 @@ async function handleCreate() {
-
+
{{ typeLabel(mandate.mandate_type) }}
-
+
{{ mandate.steps.length }} etape{{ mandate.steps.length !== 1 ? 's' : '' }}
@@ -550,4 +551,83 @@ async function handleCreate() {
font-size: 0.8125rem;
color: var(--mood-text-muted);
}
+
+.mandate-card__type-badge {
+ font-size: 0.6875rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+ padding: 3px 10px;
+ border-radius: 20px;
+ background: var(--mood-accent-soft);
+ color: var(--mood-accent);
+}
+
+/* --- Modern search / sort / action --- */
+.search-field {
+ flex: 1;
+ min-width: 10rem;
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.625rem 1rem;
+ background: var(--mood-accent-soft);
+ border-radius: 12px;
+ transition: box-shadow 0.15s ease;
+}
+.search-field:focus-within {
+ box-shadow: 0 0 0 2.5px var(--mood-accent-soft);
+}
+.search-field__icon {
+ color: var(--mood-text-muted);
+ opacity: 0.5;
+ font-size: 0.875rem;
+ flex-shrink: 0;
+}
+.search-field__input {
+ flex: 1;
+ background: none;
+ font-size: 0.9375rem;
+ color: var(--mood-text);
+ min-width: 0;
+}
+.search-field__input::placeholder {
+ color: var(--mood-text-muted);
+ opacity: 0.4;
+}
+
+.sort-select {
+ padding: 0.625rem 1rem;
+ font-size: 0.875rem;
+ font-weight: 600;
+ color: var(--mood-text);
+ background: var(--mood-accent-soft);
+ border-radius: 12px;
+ cursor: pointer;
+ appearance: none;
+ -webkit-appearance: none;
+ min-width: 5.5rem;
+}
+
+.action-btn {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.375rem;
+ padding: 0.625rem 1.25rem;
+ font-size: 0.875rem;
+ font-weight: 700;
+ color: var(--mood-accent-text);
+ background: var(--mood-accent);
+ border-radius: 20px;
+ cursor: pointer;
+ transition: transform 0.12s ease, box-shadow 0.12s ease;
+ white-space: nowrap;
+}
+.action-btn:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px var(--mood-shadow);
+}
+.action-btn:active {
+ transform: translateY(0);
+}