From fd8e65198cf7b1f86cbc6ac8a7a715216569f589 Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Thu, 20 Nov 2025 02:35:52 +0100 Subject: [PATCH 01/25] MD3 migration #11936 --- angular.json | 12 +- client/app/_app.theme.scss | 52 ---- client/app/admin/admin/_admin.theme.scss | 16 - client/app/admin/admin/admin.component.html | 132 +++++---- client/app/admin/admin/admin.component.scss | 37 ++- .../admin/events/event/event.component.html | 2 +- .../facilitator-document.component.html | 2 +- .../app/admin/newses/news/news.component.html | 2 +- .../order/order-line/_order-line.theme.scss | 11 - .../order-line/order-line.component.html | 2 +- .../order-line/order-line.component.scss | 3 + .../products/product/product.component.html | 3 +- .../sessions/session/_session.theme.scss | 0 .../sessions/session/session.component.html | 51 ++-- client/app/app.component.html | 12 +- client/app/app.component.scss | 35 +++ .../app/front-office/_front-office.theme.scss | 88 ------ .../actions/actions.component.html | 4 +- .../alimentation/alimentation.component.html | 6 +- .../agir-avec-nous/bns/bns.component.html | 22 +- ...port-epiceries-alternatives.component.html | 2 +- .../convictions/convictions.component.html | 2 +- .../components/contact/contact.component.html | 2 +- .../donation/donation.component.html | 2 +- .../faire-un-don/faire-un-don.component.html | 2 +- .../home-block/home-block.component.html | 4 +- .../components/homepage/_homepage.theme.scss | 31 -- .../homepage/homepage.component.html | 25 +- .../homepage/homepage.component.scss | 21 ++ .../components/menu/_menu.theme.scss | 36 --- .../components/menu/menu.component.scss | 24 ++ .../points-de-vente.component.html | 4 +- .../_session-facilitator-private.theme.scss | 24 -- ...session-facilitator-private.component.scss | 14 + .../_session-facilitator.theme.scss | 15 - .../session-facilitator.component.scss | 1 + .../session-side-column.component.html | 4 +- .../sessions-incoming.component.html | 6 +- .../offrir-la-revue.component.html | 2 +- .../front-office/front-office.component.html | 4 +- .../front-office/front-office.component.scss | 101 ++++++- .../cart/components/cart/cart.component.html | 14 +- .../create-order/create-order.component.html | 4 +- .../add-to-cart/add-to-cart.component.html | 4 +- .../product-page/_product-page.theme.scss | 22 -- .../product-page/product-page.component.html | 16 +- .../product-page/product-page.component.scss | 11 + .../products-page/_products-page.theme.scss | 23 -- .../products-page.component.html | 14 +- .../products-page.component.scss | 14 +- .../subscriptions/_subscriptions.theme.scss | 25 -- .../subscriptions.component.html | 16 +- .../subscriptions.component.scss | 14 + .../components/account/account.component.html | 2 +- .../components/profile/_profile.theme.scss | 22 -- .../components/profile/profile.component.html | 12 +- .../components/profile/profile.component.scss | 27 ++ .../purchases/_purchases.theme.scss | 15 - .../purchases/purchases.component.html | 4 +- .../purchases/purchases.component.scss | 4 + .../boot-loader/boot-loader.component.html | 4 +- ...ternal.scss => boot-loader.component.scss} | 2 +- .../boot-loader/boot-loader.component.ts | 1 + .../breadcrumbs/_breadcrumbs.theme.scss | 26 -- .../breadcrumbs/breadcrumbs.component.scss | 18 ++ .../_tags-navigation.theme.scss | 24 -- .../tags-navigation.component.scss | 16 + client/index.html | 18 +- client/styles.scss | 244 ++++++++++++++- client/styles/_artisans.theme.scss | 89 ------ client/styles/_components.scss | 74 ----- client/styles/_rich-text.scss | 89 ------ client/styles/_themes.scss | 278 ------------------ client/styles/artisans.scss | 75 +++++ client/styles/material_guides.scss | 64 ---- 75 files changed, 857 insertions(+), 1246 deletions(-) delete mode 100644 client/app/_app.theme.scss delete mode 100644 client/app/admin/admin/_admin.theme.scss delete mode 100644 client/app/admin/order/order-line/_order-line.theme.scss delete mode 100644 client/app/admin/sessions/session/_session.theme.scss delete mode 100644 client/app/front-office/_front-office.theme.scss delete mode 100644 client/app/front-office/components/homepage/_homepage.theme.scss delete mode 100644 client/app/front-office/components/menu/_menu.theme.scss delete mode 100644 client/app/front-office/components/session-facilitator-private/_session-facilitator-private.theme.scss delete mode 100644 client/app/front-office/components/session-facilitator/_session-facilitator.theme.scss delete mode 100644 client/app/front-office/modules/shop/components/product-page/_product-page.theme.scss delete mode 100644 client/app/front-office/modules/shop/components/products-page/_products-page.theme.scss delete mode 100644 client/app/front-office/modules/shop/components/subscriptions/_subscriptions.theme.scss delete mode 100644 client/app/profile/components/profile/_profile.theme.scss delete mode 100644 client/app/profile/components/purchases/_purchases.theme.scss rename client/app/shared/components/boot-loader/{_boot-loader.external.scss => boot-loader.component.scss} (93%) delete mode 100644 client/app/shared/components/breadcrumbs/_breadcrumbs.theme.scss delete mode 100644 client/app/shared/components/tags-navigation/_tags-navigation.theme.scss delete mode 100644 client/styles/_artisans.theme.scss delete mode 100644 client/styles/_components.scss delete mode 100644 client/styles/_rich-text.scss delete mode 100644 client/styles/_themes.scss create mode 100644 client/styles/artisans.scss delete mode 100644 client/styles/material_guides.scss diff --git a/angular.json b/angular.json index 9ab4eb53b..1722d2dd9 100644 --- a/angular.json +++ b/angular.json @@ -45,8 +45,8 @@ } ], "styles": [ - "client/styles/_themes.scss", "client/styles.scss", + "client/styles/artisans.scss", "node_modules/@ecodev/natural-layout/natural-layout.css" ], "scripts": [], @@ -113,8 +113,9 @@ "tsConfig": "client/tsconfig.spec.json", "karmaConfig": "client/karma.conf.js", "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "client/styles.scss" + "client/styles.scss", + "client/styles/artisans.scss", + "node_modules/@ecodev/natural-layout/natural-layout.css" ], "scripts": [], "assets": [ @@ -145,7 +146,10 @@ "cli": { "schematicCollections": ["@angular-eslint/schematics"], "packageManager": "yarn", - "analytics": false + "analytics": false, + "cache": { + "enabled": false + } }, "schematics": { "@angular-eslint/schematics:application": { diff --git a/client/app/_app.theme.scss b/client/app/_app.theme.scss deleted file mode 100644 index 6b1b59939..000000000 --- a/client/app/_app.theme.scss +++ /dev/null @@ -1,52 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin app($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $background: map.get($theme, background); - $foreground: map.get($theme, foreground); - - // Splash logo and login page have different background than usual layout for other pages - // and they need to have the correct background color in dark mode (otherwise we get black text on black background) - @at-root app-root > div { - & > div { - background: mat.m2-get-color-from-palette($background, background); - } - } - - ng-progress { - .ng-bar { - box-shadow: mat.m2-get-color-from-palette($accent) 0 0 5px !important; - background-color: mat.m2-get-color-from-palette($accent) !important; - height: 3px !important; - } - - .ng-meteor { - top: 0 !important; - transform: none !important; - opacity: 1 !important; - box-shadow: mat.m2-get-color-from-palette($accent) 0 0 20px !important; - width: 25px !important; - } - } - - .witnesses { - display: grid; - grid-template-columns: 50% 50%; - grid-gap: 20px; - - @media screen and (max-width: 700px) { - grid-template-columns: 100%; - } - } - - .witness { - display: inline-block; // prevents columns to break paragraph (from bottom to top of next column) - margin-bottom: 30px; - border-width: 0; - border-left-width: 5px; - border-style: solid; - border-color: mat.m2-get-color-from-palette($primary); - padding: 0 0 0 10px; - } -} diff --git a/client/app/admin/admin/_admin.theme.scss b/client/app/admin/admin/_admin.theme.scss deleted file mode 100644 index 7b1d07963..000000000 --- a/client/app/admin/admin/_admin.theme.scss +++ /dev/null @@ -1,16 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin admin($theme) { - $background: map.get($theme, background); - - app-admin { - // Re-use the same hover effect for active menu item, and add the Material boldness to text - a.mat-mdc-list-item.active { - background: mat.m2-get-color-from-palette($background, 'hover'); - - .mdc-list-item__primary-text { - font-weight: 500; - } - } - } -} diff --git a/client/app/admin/admin/admin.component.html b/client/app/admin/admin/admin.component.html index eb87e3a98..8f1333407 100644 --- a/client/app/admin/admin/admin.component.html +++ b/client/app/admin/admin/admin.component.html @@ -1,71 +1,75 @@ -
- - + + -
+
- - logo - + + logo + -
-
+
+
- - -
- - - - Utilisateurs - - - Tous les utilisateurs - Import - - + + +
+ + + + Utilisateurs + + + Tous les utilisateurs + Import + + - - - Produits - - - Tous les produits - - + + + Produits + + + Tous les produits + + - - - Communauté - - - Actualités - Événements - Commentaires - Conversations carbone - - Documents facilitateurs - - - + + + Communauté + + + Actualités + Événements + Commentaires + Conversations carbone + + Documents facilitateurs + + + - - - Comptabilité - - - Ventes - - - -
-
- -
- -
-
-
-
+ + + Comptabilité + + + Ventes + + + +
+ + +
+ +
+
+ diff --git a/client/app/admin/admin/admin.component.scss b/client/app/admin/admin/admin.component.scss index e75f6fdc3..cabb38ed8 100644 --- a/client/app/admin/admin/admin.component.scss +++ b/client/app/admin/admin/admin.component.scss @@ -1,4 +1,37 @@ -.admin-body { - padding: 20px; +@use '@angular/material' as mat; + +natural-sidenav-container { + @include mat.sidenav-overrides( + ( + container-width: 280px, + ) + ); +} + +mat-accordion { + @include mat.expansion-overrides( + ( + container-background-color: transparent, + ) + ); +} + +natural-sidenav-content { + border-top-left-radius: var(--mat-sys-corner-large); + background-color: var(--mat-sys-surface-bright); + padding: 20px clamp(5px, 2vw, 20px); + min-height: calc(100vh - 160px); overflow: auto; + @media (max-width: 400px) { + padding: 6px; + } +} + +.header-toolbar { + @include mat.toolbar-overrides( + ( + container-background-color: --mat-sys-surface-container, + container-text-color: --mat-sys-on-surface, + ) + ); } diff --git a/client/app/admin/events/event/event.component.html b/client/app/admin/events/event/event.component.html index 04f22ae6b..fcbae36be 100644 --- a/client/app/admin/events/event/event.component.html +++ b/client/app/admin/events/event/event.component.html @@ -6,7 +6,7 @@ [newLabel]="data.seo.title" > @if (isUpdatePage()) { - + Voir la page diff --git a/client/app/admin/facilitator-documents/facilitator-document/facilitator-document.component.html b/client/app/admin/facilitator-documents/facilitator-document/facilitator-document.component.html index bed891f64..577a553e4 100644 --- a/client/app/admin/facilitator-documents/facilitator-document/facilitator-document.component.html +++ b/client/app/admin/facilitator-documents/facilitator-document/facilitator-document.component.html @@ -6,7 +6,7 @@ [newLabel]="data.seo.title" > @if (isUpdatePage()) { - + Voir la page diff --git a/client/app/admin/newses/news/news.component.html b/client/app/admin/newses/news/news.component.html index 1b9a741ad..9a93d7911 100644 --- a/client/app/admin/newses/news/news.component.html +++ b/client/app/admin/newses/news/news.component.html @@ -6,7 +6,7 @@ [newLabel]="data.seo.title" > @if (isUpdatePage()) { - + Voir la page diff --git a/client/app/admin/order/order-line/_order-line.theme.scss b/client/app/admin/order/order-line/_order-line.theme.scss deleted file mode 100644 index 1d5403a00..000000000 --- a/client/app/admin/order/order-line/_order-line.theme.scss +++ /dev/null @@ -1,11 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin order-line($theme) { - $warn: map.get($theme, warn); - - app-order-line { - .warning { - color: mat.m2-get-color-from-palette($warn); - } - } -} diff --git a/client/app/admin/order/order-line/order-line.component.html b/client/app/admin/order/order-line/order-line.component.html index d31fdbdf7..c1434f44f 100644 --- a/client/app/admin/order/order-line/order-line.component.html +++ b/client/app/admin/order/order-line/order-line.component.html @@ -39,7 +39,7 @@

{{ data.seo.title }}

- diff --git a/client/app/admin/order/order-line/order-line.component.scss b/client/app/admin/order/order-line/order-line.component.scss index e69de29bb..9e89ab5c0 100644 --- a/client/app/admin/order/order-line/order-line.component.scss +++ b/client/app/admin/order/order-line/order-line.component.scss @@ -0,0 +1,3 @@ +.warning { + color: var(--mat-sys-tertiary-container); +} diff --git a/client/app/admin/products/product/product.component.html b/client/app/admin/products/product/product.component.html index 3b1fce683..aba904673 100644 --- a/client/app/admin/products/product/product.component.html +++ b/client/app/admin/products/product/product.component.html @@ -7,8 +7,7 @@ > @if (isUpdatePage()) { -

Dates de la session

- @for (date of datesForm.controls; track date) { -
- - Date - - - -
- } - - - } - - @if (isUpdatePage()) { -
+
+ @if (datesForm) { +
+

Dates de la session

+ @for (date of datesForm.controls; track date) { +
+ + Date + + + +
+ } + +
+ } + + @if (isUpdatePage()) {

Facilitateurs

Facilitateurs
-
- } + } +
diff --git a/client/app/app.component.html b/client/app/app.component.html index 8ac5456f0..a0daf9baa 100644 --- a/client/app/app.component.html +++ b/client/app/app.component.html @@ -1,7 +1,5 @@ -
- - - @if (!initialized) { - - } -
+ + +@if (!initialized) { + +} diff --git a/client/app/app.component.scss b/client/app/app.component.scss index e69de29bb..9e593df4d 100644 --- a/client/app/app.component.scss +++ b/client/app/app.component.scss @@ -0,0 +1,35 @@ +// .nat-fill +:host { + &, + ::ng-deep { + .app-page-reference + * { + display: flex; + flex: 1; + flex-direction: column; + width: 100%; + min-width: 100%; + height: 100%; + min-height: 100%; + } + } +} + +.witnesses { + display: grid; + grid-template-columns: 50% 50%; + grid-gap: 20px; + + @media screen and (max-width: 700px) { + grid-template-columns: 100%; + } +} + +.witness { + display: inline-block; // prevents columns to break paragraph (from bottom to top of next column) + margin-bottom: 30px; + border-width: 0; + border-left-width: 5px; + border-style: solid; + border-color: var(--mat-sys-primary-container); + padding: 0 0 0 10px; +} diff --git a/client/app/front-office/_front-office.theme.scss b/client/app/front-office/_front-office.theme.scss deleted file mode 100644 index 9b11ee5d6..000000000 --- a/client/app/front-office/_front-office.theme.scss +++ /dev/null @@ -1,88 +0,0 @@ -@use 'sass:color'; -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin front-office($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $warn: map.get($theme, warn); - $bg: map.get($theme, background); - $fg: map.get($theme, foreground); - - app-front-office { - #header-top { - background: color.adjust(mat.m2-get-color-from-palette($bg, app-bar), $lightness: -5%); - .mat-mdc-button:not(:disabled) { - color: color.adjust(mat.m2-get-color-from-palette($fg, text), $lightness: 35%); - } - } - - #mobile-menu .mat-expansion-panel-body { - padding-right: 0 !important; - } - - #search-field .mdc-line-ripple::before { - border: none; - } - - #logo-slogan { - color: mat.m2-get-color-from-palette($accent); - } - - #menu-main > ul { - a { - color: color.adjust(mat.m2-get-color-from-palette($fg, text), $lightness: 20%); - } - - li:hover > a, - a.open, - a.active { - span { - border-color: mat.m2-get-color-from-palette($primary) !important; - } - } - - & > li.hasMenu::after { - background: mat.m2-get-color-from-palette($bg, card); - } - - ul a:hover, - a.open, - a.active { - color: mat.m2-get-color-from-palette($primary); - } - } - - #mobile-menu a:hover { - color: mat.m2-get-color-from-palette($primary) !important; - } - - #newsletter-zone { - background: mat.m2-get-color-from-palette($accent); - color: mat.m2-get-color-from-palette($accent, default-contrast); - } - - #footer { - background: #e1e1e3; - - .mat-mdc-form-field, - mat-form-field * { - border-bottom-color: mat.m2-get-color-from-palette($primary, default-contrast) !important; - color: mat.m2-get-color-from-palette($primary, default-contrast) !important; - } - - mat-form-field .mat-mdc-text-field-wrapper { - background-color: #0000000a !important; - } - } - - #footer-body { - a:hover { - color: mat.m2-get-color-from-palette($accent); - } - - .mdc-list-item__primary-text { - text-transform: uppercase; - } - } - } -} diff --git a/client/app/front-office/components/agir-avec-nous/actions/actions.component.html b/client/app/front-office/components/agir-avec-nous/actions/actions.component.html index a35595d48..a18e7673e 100644 --- a/client/app/front-office/components/agir-avec-nous/actions/actions.component.html +++ b/client/app/front-office/components/agir-avec-nous/actions/actions.component.html @@ -4,7 +4,7 @@ >
-
+

Informer

LaRevueDurable est une revue indépendante franco-suisse sur l’écologie, la durabilité et la @@ -16,7 +16,7 @@

Impliquer

Les Conversations carbone

Le Climat entre nos mains

-
+

Agir

Désinvestir de l’industrie des énergies fossiles

Numérique éthique

diff --git a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html index 1dfd367f9..8cceb8318 100644 --- a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html +++ b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html @@ -83,11 +83,11 @@

ALIMENTATION

diff --git a/client/app/front-office/components/agir-avec-nous/bns/bns.component.html b/client/app/front-office/components/agir-avec-nous/bns/bns.component.html index 45964de8a..83695607f 100644 --- a/client/app/front-office/components/agir-avec-nous/bns/bns.component.html +++ b/client/app/front-office/components/agir-avec-nous/bns/bns.component.html @@ -8,7 +8,7 @@

RAPPORTS BNS

parlementaires, y compris au niveau fédéral.

-

Français

+

Français

Sur le climat, la BNS égare la place financière suisse

@@ -33,7 +33,7 @@

Sur le climat, la BNS égare la place financière suisse

politique, une stratégie pour aplatir la courbe des risques climatiques.

- Rapport BNS 2020 (pdf) @@ -53,7 +53,7 @@

Suisse.

- Rapport BNS 2018 (pdf) @@ -85,11 +85,11 @@

dollars/francs en trois ans.

- Rapport BNS 2016 (pdf) -

Deutsch

+

Deutsch

Die Nationalbank sendet dem Schweizer Finanzplatz falsche Signale

@@ -114,7 +114,7 @@

Die Nationalbank sendet dem Schweizer Finanzplatz falsche Sig Risikokurve zu entwickeln.

- SNB Investitionen-Bericht 2020 (pdf)

Prädikat klimaschädlich Studie zur Anlagepolitik der Schweizerischen Nationalbank

@@ -128,7 +128,7 @@

Prädikat klimaschädlich Studie zur Anlagepolitik der Schwei den Interessen der Schweiz.

- SNB Investitionen-Bericht 2018 (pdf) @@ -145,11 +145,11 @@

Artisans-Bericht zeigt zum ersten Mal die Klimawirkung der Investitionen der SNB auf.

- SNB Investitionen-Bericht 2016 (pdf) -

English

+

English

The SNB’s misguided view of climate risks misleads the entire Swiss financial centre

@@ -170,7 +170,7 @@

The SNB’s misguided view of climate risks misleads the enti climate risks curve as soon as possible.

- SNB Investment’s 2020 report (pdf) @@ -207,7 +207,7 @@

is 0.85°C. The SNB is thus making the situation much worse for the country.

- SNB Investment’s 2018 report (pdf)

diff --git a/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html b/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html index 528abfb34..0e5761bbd 100644 --- a/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html +++ b/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html @@ -31,7 +31,7 @@

PREMIER RAPPORT SUR LES ÉPICERIES ALTERNATIVES EN SU sus les obstacles à leur rayonnement, puis développe cinq propositions pour lever ces obstacles.


- Rapport 2024 (pdf) + Rapport 2024 (pdf)

diff --git a/client/app/front-office/components/association/convictions/convictions.component.html b/client/app/front-office/components/association/convictions/convictions.component.html index 33855f747..ebbc61efa 100644 --- a/client/app/front-office/components/association/convictions/convictions.component.html +++ b/client/app/front-office/components/association/convictions/convictions.component.html @@ -10,7 +10,7 @@

NOS CONVICTIONS

-

+

« Lorsqu’on commence à agir, l’espoir est partout. Au lieu de chercher l’espoir, il faut donc plutôt chercher à agir. L’espoir suivra. » Greta Thunberg

diff --git a/client/app/front-office/components/contact/contact.component.html b/client/app/front-office/components/contact/contact.component.html index b9ed04e48..c5732ef09 100644 --- a/client/app/front-office/components/contact/contact.component.html +++ b/client/app/front-office/components/contact/contact.component.html @@ -18,7 +18,7 @@

NOUS CONTACTER

ou de vous entendre, toute la semaine sauf le mercredi : - +41 26 321 37 11 + +41 26 321 37 11

diff --git a/client/app/front-office/components/donation/donation.component.html b/client/app/front-office/components/donation/donation.component.html index 5229ba359..ee6b8a727 100644 --- a/client/app/front-office/components/donation/donation.component.html +++ b/client/app/front-office/components/donation/donation.component.html @@ -18,7 +18,7 @@

Faire un don

- diff --git a/client/app/front-office/components/faire-un-don/faire-un-don.component.html b/client/app/front-office/components/faire-un-don/faire-un-don.component.html index c32bab2ed..ac42c9579 100644 --- a/client/app/front-office/components/faire-un-don/faire-un-don.component.html +++ b/client/app/front-office/components/faire-un-don/faire-un-don.component.html @@ -36,7 +36,7 @@

FAIRE UN DON


- Faire un don
diff --git a/client/app/front-office/components/home-block/home-block.component.html b/client/app/front-office/components/home-block/home-block.component.html index 3fd10d863..83de9c169 100644 --- a/client/app/front-office/components/home-block/home-block.component.html +++ b/client/app/front-office/components/home-block/home-block.component.html @@ -2,7 +2,7 @@
{{ form.get('title')?.value }}
{{ form.get('description')?.value }}
- + {{ form.get('buttonLabel')?.value }} @if ((permissionsService.crud | async)?.configuration.create) { @@ -53,7 +53,7 @@
- diff --git a/client/app/front-office/components/homepage/_homepage.theme.scss b/client/app/front-office/components/homepage/_homepage.theme.scss deleted file mode 100644 index 9a189c7d9..000000000 --- a/client/app/front-office/components/homepage/_homepage.theme.scss +++ /dev/null @@ -1,31 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin homepage($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $warn: map.get($theme, warn); - $bg: map.get($theme, background); - $fg: map.get($theme, foreground); - - app-homepage { - a.mat-headline-4 { - color: mat.m2-get-color-from-palette($fg, base); - - &:hover { - color: mat.m2-get-color-from-palette($primary); - } - } - - .description { - color: mat.m2-get-color-from-palette($fg, base, 0.75); - } - - .events { - background: mat.m2-get-color-from-palette($accent, A100); - - mat-divider { - border-color: mat.m2-get-color-from-palette($accent); - } - } - } -} diff --git a/client/app/front-office/components/homepage/homepage.component.html b/client/app/front-office/components/homepage/homepage.component.html index 9e9b682cd..88147265d 100644 --- a/client/app/front-office/components/homepage/homepage.component.html +++ b/client/app/front-office/components/homepage/homepage.component.html @@ -48,7 +48,7 @@
- Voir toutes nos actualités + Voir toutes nos actualités
@@ -85,7 +85,7 @@ }
- Voir tout l'agenda + Voir tout l'agenda
@@ -116,7 +116,7 @@ }
-
Le dernier numéro
+
Le dernier numéro
{{ currentReview.reviewNumber }} | @@ -137,7 +137,12 @@ @if (currentReview.file) {
- + Télécharger le numéro
@@ -151,7 +156,9 @@
@@ -159,7 +166,7 @@
NOUS SOUTENIR
-
+ @@ -190,7 +197,7 @@ privilégié avec notre action. Et nous donne plus de légitimité et de poids.

- Découvrir l'association + Découvrir l'association
@@ -207,7 +214,7 @@ compétente.

- Faire un don + Faire un don diff --git a/client/app/front-office/components/homepage/homepage.component.scss b/client/app/front-office/components/homepage/homepage.component.scss index d51740b3a..ebf35b9cc 100644 --- a/client/app/front-office/components/homepage/homepage.component.scss +++ b/client/app/front-office/components/homepage/homepage.component.scss @@ -1,4 +1,5 @@ @use 'sass:color'; +@use '@angular/material' as mat; @use '../../../../styles/responsive'; @use '../../../../styles/variables'; @@ -182,3 +183,23 @@ color: white; } } + +a.mat-headline-4 { + color: var(--mat-sys-on-surface); + + &:hover { + color: var(--mat-sys-primary-container); + } +} + +.description { + color: color-mix(in srgb, var(--mat-sys-on-background) 90%, white); +} + +.events { + background: rgb(246, 242, 230); + + mat-divider { + border-color: var(--mat-sys-tertiary-container); + } +} diff --git a/client/app/front-office/components/menu/_menu.theme.scss b/client/app/front-office/components/menu/_menu.theme.scss deleted file mode 100644 index dd0dcbfbf..000000000 --- a/client/app/front-office/components/menu/_menu.theme.scss +++ /dev/null @@ -1,36 +0,0 @@ -@use 'sass:color'; -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin menu($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $warn: map.get($theme, warn); - $bg: map.get($theme, background); - $fg: map.get($theme, foreground); - - .mega-menu { - background: mat.m2-get-color-from-palette($bg, base); - - ul { - a { - color: color.adjust(mat.m2-get-color-from-palette($fg, text), $lightness: 20%); - } - - a:hover { - color: mat.m2-get-color-from-palette($primary) !important; - } - - li:hover > a { - border-color: mat.m2-get-color-from-palette($primary) !important; - } - - & > li.hasMenu::after { - background: mat.m2-get-color-from-palette($bg, card); - } - - a.active { - color: mat.m2-get-color-from-palette($primary) !important; - } - } - } -} diff --git a/client/app/front-office/components/menu/menu.component.scss b/client/app/front-office/components/menu/menu.component.scss index 78b203a79..ac14ee2cf 100644 --- a/client/app/front-office/components/menu/menu.component.scss +++ b/client/app/front-office/components/menu/menu.component.scss @@ -21,6 +21,8 @@ animation: _mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1); border-radius: 5px; background: white; + + background: var(--mat-sys-surface-container-lowest); padding-top: 15px; padding-bottom: 15px; overflow: auto; @@ -65,4 +67,26 @@ } } } + + ul { + a { + color: var(--mat-sys-on-surface); + } + + a:hover { + color: var(--mat-sys-primary-container) !important; + } + + li:hover > a { + border-color: var(--mat-sys-primary-container) !important; + } + + & > li.hasMenu::after { + background: var(--mat-sys-surface-container-lowest); + } + + a.active { + color: var(--mat-sys-primary-container) !important; + } + } } diff --git a/client/app/front-office/components/points-de-vente/points-de-vente.component.html b/client/app/front-office/components/points-de-vente/points-de-vente.component.html index 5fe128669..56b3991e8 100644 --- a/client/app/front-office/components/points-de-vente/points-de-vente.component.html +++ b/client/app/front-office/components/points-de-vente/points-de-vente.component.html @@ -13,7 +13,7 @@

POINTS DE VENTE

parler : courriel@artisansdelatransition.org

-

Suisse

+

Suisse

Fribourg

@@ -152,7 +152,7 @@

Vaud

-

France

+

France

Le Vert de Terre
diff --git a/client/app/front-office/components/session-facilitator-private/_session-facilitator-private.theme.scss b/client/app/front-office/components/session-facilitator-private/_session-facilitator-private.theme.scss deleted file mode 100644 index fa8717850..000000000 --- a/client/app/front-office/components/session-facilitator-private/_session-facilitator-private.theme.scss +++ /dev/null @@ -1,24 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin session-facilitator-private($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $warn: map.get($theme, warn); - $bg: map.get($theme, background); - $fg: map.get($theme, foreground); - - app-session-facilitator-private { - .facilitator { - border-left-color: mat.m2-get-color-from-palette($primary); - } - - .category { - border-left-color: mat.m2-get-color-from-palette($accent); - } - - .document:hover { - background: mat.m2-get-color-from-palette($primary); - color: mat.m2-get-color-from-palette($primary, default-contrast); - } - } -} diff --git a/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.scss b/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.scss index 8ee7503e0..ee79be38a 100644 --- a/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.scss +++ b/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.scss @@ -1,4 +1,5 @@ @use '../../../../styles/mixins'; + @include mixins.page-with-illustration(); .facilitators { @@ -52,3 +53,16 @@ padding: 3px 5px; } } + +.facilitator { + border-left-color: var(--mat-sys-primary-container); +} + +.category { + border-left-color: var(--mat-sys-tertiary-container); +} + +.document:hover { + background: var(--mat-sys-primary-container); + color: var(--mat-sys-on-primary-container); +} diff --git a/client/app/front-office/components/session-facilitator/_session-facilitator.theme.scss b/client/app/front-office/components/session-facilitator/_session-facilitator.theme.scss deleted file mode 100644 index 98eb744f4..000000000 --- a/client/app/front-office/components/session-facilitator/_session-facilitator.theme.scss +++ /dev/null @@ -1,15 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin session-facilitator($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $warn: map.get($theme, warn); - $bg: map.get($theme, background); - $fg: map.get($theme, foreground); - - app-session-facilitator { - .facilitator { - border-left-color: mat.m2-get-color-from-palette($primary); - } - } -} diff --git a/client/app/front-office/components/session-facilitator/session-facilitator.component.scss b/client/app/front-office/components/session-facilitator/session-facilitator.component.scss index 3c070bd15..88c436100 100644 --- a/client/app/front-office/components/session-facilitator/session-facilitator.component.scss +++ b/client/app/front-office/components/session-facilitator/session-facilitator.component.scss @@ -14,6 +14,7 @@ align-items: flex-start; border-left-width: 6px; border-left-style: solid; + border-left-color: var(--mat-sys-primary-container); padding: 5px 0 5px 10px; } } diff --git a/client/app/front-office/components/session-side-column/session-side-column.component.html b/client/app/front-office/components/session-side-column/session-side-column.component.html index 7d1c5ecda..1ae7ab671 100644 --- a/client/app/front-office/components/session-side-column/session-side-column.component.html +++ b/client/app/front-office/components/session-side-column/session-side-column.component.html @@ -8,13 +8,13 @@

La méthode

} @if (hiddenBlocName() !== 'prochaines') { -
+

Rejoignez une conversation carbone !

Des Conversations carbone sont organisées dans différentes localités de Suisse Romande.

- Je vais voir + Je vais voir
} diff --git a/client/app/front-office/components/sessions-incoming/sessions-incoming.component.html b/client/app/front-office/components/sessions-incoming/sessions-incoming.component.html index a72d51613..c1220a017 100644 --- a/client/app/front-office/components/sessions-incoming/sessions-incoming.component.html +++ b/client/app/front-office/components/sessions-incoming/sessions-incoming.component.html @@ -18,7 +18,7 @@

Infos pratiques

{{ session.name }}
@if (session.mailingList) { - + Infos } @@ -48,7 +48,7 @@

Infos pratiques

-
+

" La crise climatique est alarmante et il est facile de se sentir impuissant. Nous essayons de commencer là où les gens en sont aujourd’hui, pas là où nous aimerions qu’ils soient @@ -56,7 +56,7 @@

Infos pratiques

Rosemary Randall, co-fondatrice des Conversations carbone

-
+

" L'incertitude que la crise climatique engendre peut pousser à trop se concentrer sur ses rêves et ses cauchemars. Il rend difficile de penser concrètement à ce que nous voulons et à ce qui diff --git a/client/app/front-office/components/soutenir/offrir-la-revue/offrir-la-revue.component.html b/client/app/front-office/components/soutenir/offrir-la-revue/offrir-la-revue.component.html index 5e597a186..40da38a68 100644 --- a/client/app/front-office/components/soutenir/offrir-la-revue/offrir-la-revue.component.html +++ b/client/app/front-office/components/soutenir/offrir-la-revue/offrir-la-revue.component.html @@ -26,7 +26,7 @@

OFFRIR OU S'OFFRIR LAREVUEDURABLE

les thèmes qui touchent à la durabilité dans une soixantaine de pays.

- S'abonner + S'abonner
diff --git a/client/app/front-office/front-office.component.html b/client/app/front-office/front-office.component.html index 717e37d44..233acd501 100644 --- a/client/app/front-office/front-office.component.html +++ b/client/app/front-office/front-office.component.html @@ -106,7 +106,7 @@
- + Rechercher @if (newsletterForm.valid) { - + }
diff --git a/client/app/front-office/front-office.component.scss b/client/app/front-office/front-office.component.scss index 2d9f5dded..8acd3918d 100644 --- a/client/app/front-office/front-office.component.scss +++ b/client/app/front-office/front-office.component.scss @@ -1,4 +1,17 @@ @use '@ecodev/natural-layout' as nat; +@use '@angular/material' as mat; + +:host { + @include mat.button-overrides( + ( + filled-container-shape: 0, + outlined-container-shape: 0, + protected-container-shape: 0, + text-container-shape: 0, + tonal-container-shape: 0, + ) + ); +} mat-sidenav-container { width: 100%; @@ -96,6 +109,14 @@ app-breadcrumbs { align-items: center; } } + + @include mat.form-field-overrides( + ( + filled-container-color: rgba(0, 0, 0, 0.1), + filled-active-indicator-color: white, + filled-focus-active-indicator-color: white, + ) + ); } #front-office-body { @@ -103,11 +124,15 @@ app-breadcrumbs { } #header-top { - padding: 5px 0; + background: var(--mat-sys-surface-dim); .mdc-button { text-transform: uppercase; } + + .mat-mdc-button:not(:disabled) { + color: color-mix(in srgb, var(--mat-sys-on-background) 60%, white); + } } #header-middle { @@ -119,11 +144,6 @@ app-breadcrumbs { margin-bottom: 30px; } -#search-field { - //margin-bottom: -1.34375em; - margin-bottom: -1em; -} - #header-bottom { position: relative; } @@ -143,6 +163,10 @@ app-breadcrumbs { padding: 0; height: 50px; + a { + color: color-mix(in srgb, var(--mat-sys-on-background) 80%, white); + } + ul { position: absolute; z-index: 901; @@ -217,3 +241,68 @@ app-breadcrumbs { max-height: 400px; } } + +#mobile-menu .mat-expansion-panel-body { + padding-right: 0 !important; +} + +#search-field .mdc-line-ripple::before { + border: none; +} + +#logo-slogan { + color: var(--mat-sys-tertiary-container); +} + +#menu-main ul { + li:hover > a, + a.open, + a.active { + span { + border-color: var(--mat-sys-primary-container) !important; + } + } + + & > li.hasMenu::after { + background: var(--mat-sys-surface-container-highest); + } + + ul a:hover, + a.open, + a.active { + color: var(--mat-sys-primary-container); + } +} + +#mobile-menu a:hover { + color: var(--mat-sys-primary-container) !important; +} + +#newsletter-zone { + background: var(--mat-sys-tertiary-container); + color: var(--mat-sys-on-tertiary-container); +} + +#footer { + background: #e1e1e3; + + .mat-mdc-form-field, + mat-form-field * { + border-bottom-color: var(--mat-sys-on-primary-container) !important; + color: var(--mat-sys-on-primary-container) !important; + } + + mat-form-field .mat-mdc-text-field-wrapper { + background-color: #0000000a !important; + } +} + +#footer-body { + a:hover { + color: var(--mat-sys-tertiary-container); + } + + .mdc-list-item__primary-text { + text-transform: uppercase; + } +} diff --git a/client/app/front-office/modules/cart/components/cart/cart.component.html b/client/app/front-office/modules/cart/components/cart/cart.component.html index cb9c2d95f..1c2fa3a25 100644 --- a/client/app/front-office/modules/cart/components/cart/cart.component.html +++ b/client/app/front-office/modules/cart/components/cart/cart.component.html @@ -6,10 +6,12 @@
Aucun article dans le panier
@@ -143,11 +145,11 @@
@if (!cart.donationAmount) { - } -
diff --git a/client/app/front-office/modules/cart/components/create-order/create-order.component.html b/client/app/front-office/modules/cart/components/create-order/create-order.component.html index 3eccbdb2a..eaf0a26d3 100644 --- a/client/app/front-office/modules/cart/components/create-order/create-order.component.html +++ b/client/app/front-office/modules/cart/components/create-order/create-order.component.html @@ -32,7 +32,7 @@

Adresse de facturation

}
-
+
@for (line of cart.productLines; track line) {
@@ -62,7 +62,7 @@

Adresse de facturation

diff --git a/client/app/profile/components/profile/_profile.theme.scss b/client/app/profile/components/profile/_profile.theme.scss deleted file mode 100644 index f110e305f..000000000 --- a/client/app/profile/components/profile/_profile.theme.scss +++ /dev/null @@ -1,22 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin profile($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $warn: map.get($theme, warn); - $bg: map.get($theme, background); - $fg: map.get($theme, foreground); - - app-profile { - mat-nav-list { - padding-top: 0 !important; // override native .mat-list-base - * { - color: inherit !important; - } - } - - .active { - background: mat.m2-get-color-from-palette($primary, 400); - } - } -} diff --git a/client/app/profile/components/profile/profile.component.html b/client/app/profile/components/profile/profile.component.html index b5008dcdd..f067e6949 100644 --- a/client/app/profile/components/profile/profile.component.html +++ b/client/app/profile/components/profile/profile.component.html @@ -1,9 +1,9 @@ @if (viewer) { -
+
Bonjour {{ viewer.firstName }},
- @@ -16,14 +16,14 @@ viewer.subscriptionLastReviewNumber }}
- Renouveler + Renouveler } @if (viewer.webTemporaryAccess) {
Abonnement actif
} @if (!viewer.subscriptionLastReviewNumber && !viewer.webTemporaryAccess) {
N'est pas abonné.
- S'abonner + S'abonner }
@@ -38,7 +38,7 @@ /> } @if (viewer.membership !== Membership.None) { - Arrêter les cotisations + Arrêter les cotisations }
@@ -48,7 +48,7 @@
-
+
Mon compte
Articles achetés
@if (orderLine.product.reviewNumber) { - N° {{ orderLine.product.reviewNumber }} + N° {{ orderLine.product.reviewNumber }} } @if (orderLine.product.releaseDate) { @@ -41,7 +41,7 @@

Articles achetés

{{ orderLine.product.name }}
@if (canDownload(orderLine)) { - + Télécharger diff --git a/client/app/profile/components/purchases/purchases.component.scss b/client/app/profile/components/purchases/purchases.component.scss index c6856b154..83b3099ac 100644 --- a/client/app/profile/components/purchases/purchases.component.scss +++ b/client/app/profile/components/purchases/purchases.component.scss @@ -1,3 +1,7 @@ .product-image img { max-width: 100px; } + +.product a { + color: var(--mat-sys-on-surface); +} diff --git a/client/app/shared/components/boot-loader/boot-loader.component.html b/client/app/shared/components/boot-loader/boot-loader.component.html index 008cebc28..419778eb1 100644 --- a/client/app/shared/components/boot-loader/boot-loader.component.html +++ b/client/app/shared/components/boot-loader/boot-loader.component.html @@ -1,3 +1 @@ -
- -
+ diff --git a/client/app/shared/components/boot-loader/_boot-loader.external.scss b/client/app/shared/components/boot-loader/boot-loader.component.scss similarity index 93% rename from client/app/shared/components/boot-loader/_boot-loader.external.scss rename to client/app/shared/components/boot-loader/boot-loader.component.scss index c97756252..20c26ae36 100644 --- a/client/app/shared/components/boot-loader/_boot-loader.external.scss +++ b/client/app/shared/components/boot-loader/boot-loader.component.scss @@ -1,4 +1,4 @@ -.bootloader { +:host { display: flex; position: absolute; top: 0; diff --git a/client/app/shared/components/boot-loader/boot-loader.component.ts b/client/app/shared/components/boot-loader/boot-loader.component.ts index d8dbeeaef..0edcedd2d 100644 --- a/client/app/shared/components/boot-loader/boot-loader.component.ts +++ b/client/app/shared/components/boot-loader/boot-loader.component.ts @@ -3,5 +3,6 @@ import {Component} from '@angular/core'; @Component({ selector: 'app-boot-loader', templateUrl: './boot-loader.component.html', + styleUrl: 'boot-loader.component.scss', }) export class BootLoaderComponent {} diff --git a/client/app/shared/components/breadcrumbs/_breadcrumbs.theme.scss b/client/app/shared/components/breadcrumbs/_breadcrumbs.theme.scss deleted file mode 100644 index ca6f6e69b..000000000 --- a/client/app/shared/components/breadcrumbs/_breadcrumbs.theme.scss +++ /dev/null @@ -1,26 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin breadcrumbs($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $background: map.get($theme, background); - $foreground: map.get($theme, foreground); - - app-breadcrumbs { - .mat-mdc-button { - padding-right: 7px; - padding-left: 7px; - } - - * { - color: mat.m2-get-color-from-palette($foreground, text, 0.7); - } - - .separator { - &::before, - &::after { - border-color: mat.m2-get-color-from-palette($foreground, text, 0.3); - } - } - } -} diff --git a/client/app/shared/components/breadcrumbs/breadcrumbs.component.scss b/client/app/shared/components/breadcrumbs/breadcrumbs.component.scss index 4f8324b4a..24b6119ca 100644 --- a/client/app/shared/components/breadcrumbs/breadcrumbs.component.scss +++ b/client/app/shared/components/breadcrumbs/breadcrumbs.component.scss @@ -1,8 +1,21 @@ +@use '@angular/material' as mat; + :host { display: flex; flex-direction: row; align-items: center; + + @include mat.button-overrides( + ( + text-label-text-color: color-mix(in srgb, var(--mat-sys-on-surface) 80%, transparent), + ) + ); +} + +* { + color: color-mix(in srgb, var(--mat-sys-on-surface) 50%, transparent); } + mat-icon { transform: scale(0.66); } @@ -39,3 +52,8 @@ mat-icon { border-left-color: transparent; } } + +.mat-mdc-button { + padding-right: 7px; + padding-left: 7px; +} diff --git a/client/app/shared/components/tags-navigation/_tags-navigation.theme.scss b/client/app/shared/components/tags-navigation/_tags-navigation.theme.scss deleted file mode 100644 index 52a91bcc3..000000000 --- a/client/app/shared/components/tags-navigation/_tags-navigation.theme.scss +++ /dev/null @@ -1,24 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin tags-navigation($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $background: map.get($theme, background); - $foreground: map.get($theme, foreground); - - app-tags-navigation { - &, - a { - // explicit a gives more ponderation to css selector - color: mat.m2-get-color-from-palette($foreground, text, 0.25); - } - - .dot { - background-color: mat.m2-get-color-from-palette($foreground, text, 0.15); - } - - a:hover { - color: mat.m2-get-color-from-palette($primary); - } - } -} diff --git a/client/app/shared/components/tags-navigation/tags-navigation.component.scss b/client/app/shared/components/tags-navigation/tags-navigation.component.scss index 0600173c5..280377c73 100644 --- a/client/app/shared/components/tags-navigation/tags-navigation.component.scss +++ b/client/app/shared/components/tags-navigation/tags-navigation.component.scss @@ -27,3 +27,19 @@ top: -3px; } } + +:host { + &, + a { + // explicit a gives more ponderation to css selector + color: color-mix(in srgb, var(--mat-sys-on-surface-variant) 40%, white); + } + + .dot { + background-color: color-mix(in srgb, var(--mat-sys-on-surface-variant) 30%, white); + } + + a:hover { + color: var(--mat-sys-primary-container); + } +} diff --git a/client/index.html b/client/index.html index 4cdbda027..f2843d9ef 100644 --- a/client/index.html +++ b/client/index.html @@ -1,5 +1,5 @@ - + Les artisans de la transition @@ -16,10 +16,20 @@ + + - - - + + + + diff --git a/client/styles.scss b/client/styles.scss index e1dabb47b..af5ad03b9 100644 --- a/client/styles.scss +++ b/client/styles.scss @@ -1,15 +1,54 @@ -/* You can add global styles to this file, and also import other style files */ -@use 'app/shared/components/boot-loader/boot-loader.external'; @use 'styles/responsive'; +@use '@ecodev/natural'; @use '@ecodev/natural-layout' as nat; +@use '@angular/material' as mat; -body { - margin: 0; +html { + @include mat.theme( + ( + color: (), + typography: Roboto, + density: 0, + ) + ); } html, -body { +body, +app-root { + margin: 0; height: 100%; + min-height: 100%; +} + +app-root { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +body { + background-color: var(--mat-sys-surface-container); + color: var(--mat-sys-on-surface); + font: var(--mat-sys-body-medium); + + @include mat.table-overrides( + ( + row-item-outline-color: var(--mat-sys-outline-variant), + ) + ); + + @include mat.sidenav-overrides( + ( + container-background-color: var(--mat-sys-surface-container), + content-background-color: var(--mat-sys-surface-container), + ) + ); +} + +natural-sidenav-container { + margin: 0; } .container { @@ -89,11 +128,6 @@ input[type='number'] { -moz-appearance: textfield; /* Firefox */ } -.mdc-button { - height: auto !important; - min-height: var(--mat-button-filled-container-height); -} - .natural-table { display: table; @@ -134,12 +168,6 @@ input[type='number'] { width: 14em; } -.mat-mdc-button, -.mat-mdc-outlined-button, -.mat-mdc-unelevated-button { - border-radius: 0 !important; -} - .page-illustration { display: none; background-position: center; @@ -207,3 +235,187 @@ input[type='number'] { [class*='-vertical'][class*='-gap-'] > * { margin-bottom: 0 !important; } + +ng-progress { + .ng-bar { + box-shadow: var(--mat-sys-tertiary-container) 0 0 5px !important; + background-color: var(--mat-sys-tertiary-container) !important; + height: 3px !important; + } + + .ng-meteor { + top: 0 !important; + transform: none !important; + opacity: 1 !important; + box-shadow: var(--mat-sys-tertiary-container) 0 0 20px !important; + width: 25px !important; + } +} + +.pageHeader { + padding-top: 20px; + .pageTitle { + position: relative; + min-width: 300px; + + & > span { + position: absolute; + top: -1.7em; + left: 0; + color: var(--mat-sys-primary-container); + font-size: 0.6em; + } + } +} + +app-admin router-outlet + * { + padding-bottom: 100px; +} + +.text-bold { + font-weight: bold !important; +} + +.text-thin { + font-weight: 100 !important; +} + +.frame-green { + background: #00ae8c; + color: white; +} + +.frame-stroked-primary { + border: 1px solid var(--mat-sys-primary-container); +} + +.frame-stroked-accent { + border: 1px solid var(--mat-sys-tertiary-container); +} + +.frame-stroked-warn { + border: 1px solid var(--mat-sys-error-container); +} + +.frame-padding { + padding: 30px; +} + +a { + color: var(--mat-sys-primary-container); +} + +[matButton='filled'][color='tertiary'] { + @include mat.button-overrides( + ( + filled-container-shape: 0, + filled-container-color: var(--mat-sys-tertiary-container), + ) + ); +} + +.rich-text { + line-height: 1.6em; + + .strong { + font-weight: bold; + } + + ul { + position: relative; + list-style: none; + + li { + margin-left: 0; + + &::before { + position: absolute; + left: 0; + content: '➔'; + } + } + } + + h1, + h2, + h3 { + margin-top: 1.3em; + } + + img { + margin: 1em 0; + max-width: 100%; + } + + .image-before-title { + position: relative; + top: 2.5em; + } +} + +app-home-block, +app-subscriptions, +.nat-frame-primary, +.nat-frame-tertiary, +.frame-green { + @include mat.button-overrides( + ( + filled-container-color: white, + filled-label-text-color: black, + text-label-text-color: black, + ) + ); +} + +//.rich-text a, +//a.app-link { +// &:not(.mat-mdc-button-base):not(.no-style) { +// border-bottom: 2px solid mat.m2-get-color-from-palette($primary); +// color: inherit; +// +// &:hover { +// color: mat.m2-get-color-from-palette($primary); +// } +// } +//} + +.rich-text a, +a.app-link { + //&:not(.mat-mdc-button-base):not(.no-style) { + cursor: pointer; + border-bottom: 2px solid var(--mat-sys-primary-container); + color: inherit; + text-decoration: none; + + &:hover { + color: var(--mat-sys-primary-container); + } + //} +} + +// Admin part +//.rich-text.admin-editor { +// border-bottom: 1px solid mat.m2-get-color-from-palette($foreground, base, 0.5); +// border-top-right-radius: 4px; +// border-top-left-radius: 4px; +// background: mat.m2-get-color-from-palette( +// $foreground, +// base, +// if(map.get($theme, is-dark), 0.1, 0.04) +// ); // match official mat-form-field component style +// padding: 10px 10px 0 10px; +// font-size: 13px; +// +// .ql-editor { +// padding: 0.25em 0 0.75em 0; +// +// p { +// margin-bottom: 0; +// } +// } +// +// .label { +// opacity: 0.6; +// font-size: 0.9em; +// } +//} diff --git a/client/styles/_artisans.theme.scss b/client/styles/_artisans.theme.scss deleted file mode 100644 index b1271e782..000000000 --- a/client/styles/_artisans.theme.scss +++ /dev/null @@ -1,89 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -@mixin artisans($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $warn: map.get($theme, warn); - $bg: map.get($theme, background); - $fg: map.get($theme, foreground); - - .text-primary { - color: mat.m2-get-color-from-palette($primary); - } - - .text-accent { - color: mat.m2-get-color-from-palette($accent); - } - - .text-warn { - color: mat.m2-get-color-from-palette($warn); - } - - .text-light { - color: mat.m2-get-color-from-palette($fg, base, 0.5); - } - - .text-bold { - font-weight: bold !important; - } - - .text-thin { - font-weight: 100 !important; - } - - .frame-primary { - background: mat.m2-get-color-from-palette($primary); - - &, - a:not(.mat-mdc-unelevated-button):not(.mat-mdc-button):not(.mat-mdc-raised-button):not(.mat-tonal-button) { - color: mat.m2-get-color-from-palette($primary, default-contrast); - } - } - - .frame-accent { - background: mat.m2-get-color-from-palette($accent); - - &, - a:not(.mat-mdc-unelevated-button):not(.mat-mdc-button):not(.mat-mdc-raised-button):not(.mat-tonal-button) { - color: mat.m2-get-color-from-palette($accent, default-contrast); - } - } - - .frame-warn { - background: mat.m2-get-color-from-palette($warn); - - &, - a:not(.mat-mdc-unelevated-button):not(.mat-mdc-button):not(.mat-mdc-raised-button):not(.mat-tonal-button) { - color: mat.m2-get-color-from-palette($warn, default-contrast); - } - } - - .frame-green { - background: #00ae8c; - - &, - a:not(.mat-mdc-unelevated-button):not(.mat-mdc-button):not(.mat-mdc-raised-button):not(.mat-tonal-button) { - color: #ffffff; - } - } - - .frame-stroked-primary { - border: 1px solid mat.m2-get-color-from-palette($primary); - } - - .frame-stroked-accent { - border: 1px solid mat.m2-get-color-from-palette($accent); - } - - .frame-stroked-warn { - border: 1px solid mat.m2-get-color-from-palette($warn); - } - - .frame-padding { - padding: 30px; - } - - a { - color: mat.m2-get-color-from-palette($primary); - } -} diff --git a/client/styles/_components.scss b/client/styles/_components.scss deleted file mode 100644 index b3a28c4e3..000000000 --- a/client/styles/_components.scss +++ /dev/null @@ -1,74 +0,0 @@ -/** - * !!! NEVER INCLUDE THIS FILE IN A SCSS FILE - * See source doc here https://github.com/angular/material2/tree/master/src/lib/core/theming - */ -// Import theming files full relative way or karma will display warning -@use 'sass:map'; -@use '@angular/material' as mat; -@use '@ecodev/natural'; -@use '@ecodev/natural-editor'; -@use '../app/app.theme'; -@use 'rich-text'; -@use 'artisans.theme'; -@use '../app/shared/components/breadcrumbs/breadcrumbs.theme'; -@use '../app/shared/components/tags-navigation/tags-navigation.theme'; -@use '../app/admin/admin/admin.theme'; -@use '../app/admin/order/order-line/order-line.theme'; -@use '../app/profile/components/profile/profile.theme'; -@use '../app/profile/components/purchases/purchases.theme'; -@use '../app/front-office/components/homepage/homepage.theme'; -@use '../app/front-office/front-office.theme'; -@use '../app/front-office/components/menu/menu.theme'; -@use '../app/front-office/components/session-facilitator/session-facilitator.theme'; -@use '../app/front-office/components/session-facilitator-private/session-facilitator-private.theme'; -@use '../app/front-office/modules/shop/components/products-page/products-page.theme'; -@use '../app/front-office/modules/shop/components/product-page/product-page.theme'; -@use '../app/front-office/modules/shop/components/subscriptions/subscriptions.theme'; - -@mixin page-header($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $background: map.get($theme, background); - $foreground: map.get($theme, foreground); - - .pageHeader { - padding-top: 20px; - - .pageTitle { - position: relative; - min-width: 300px; - - & > span { - position: absolute; - top: -1.7em; - left: 0; - color: mat.m2-get-color-from-palette($primary); - font-size: 0.6em; - } - } - } -} - -// Include components themes -@mixin components-theme($theme) { - @include app.app($theme); - @include natural.natural($theme); - @include natural-editor.natural-editor($theme); - @include artisans.artisans($theme); - @include page-header($theme); - @include rich-text.rich-text($theme); - @include profile.profile($theme); - @include homepage.homepage($theme); - @include front-office.front-office($theme); - @include products-page.products-page($theme); - @include product-page.product-page($theme); - @include tags-navigation.tags-navigation($theme); - @include menu.menu($theme); - @include breadcrumbs.breadcrumbs($theme); - @include order-line.order-line($theme); - @include subscriptions.subscriptions($theme); - @include purchases.purchases($theme); - @include session-facilitator.session-facilitator($theme); - @include session-facilitator-private.session-facilitator-private($theme); - @include admin.admin($theme); -} diff --git a/client/styles/_rich-text.scss b/client/styles/_rich-text.scss deleted file mode 100644 index bfd983c83..000000000 --- a/client/styles/_rich-text.scss +++ /dev/null @@ -1,89 +0,0 @@ -@use 'sass:map'; -@use '@angular/material' as mat; -/** - * For some rich text editor or for static text oriented front-office pages content - */ -@mixin rich-text($theme) { - $primary: map.get($theme, primary); - $accent: map.get($theme, accent); - $background: map.get($theme, background); - $foreground: map.get($theme, foreground); - - .rich-text { - line-height: 1.6em; - - .strong { - font-weight: bold; - } - - ul { - position: relative; - list-style: none; - - li { - margin-left: 0; - - &::before { - position: absolute; - left: 0; - content: '➔'; - } - } - } - - h1, - h2, - h3 { - margin-top: 1.3em; - } - - img { - margin: 1em 0; - max-width: 100%; - } - - .image-before-title { - position: relative; - top: 2.5em; - } - } - - .rich-text a, - a.app-link { - &:not(.mat-mdc-button-base):not(.no-style) { - border-bottom: 2px solid mat.m2-get-color-from-palette($primary); - color: inherit; - - &:hover { - color: mat.m2-get-color-from-palette($primary); - } - } - } - - // Admin part - .rich-text.admin-editor { - border-bottom: 1px solid mat.m2-get-color-from-palette($foreground, base, 0.5); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - background: mat.m2-get-color-from-palette( - $foreground, - base, - if(map.get($theme, is-dark), 0.1, 0.04) - ); // match official mat-form-field component style - padding: 10px 10px 0 10px; - font-size: 13px; - - .ql-editor { - padding: 0.25em 0 0.75em 0; - - p { - margin-bottom: 0; - } - } - - .label { - opacity: 0.6; - font-size: 0.9em; - } - } -} diff --git a/client/styles/_themes.scss b/client/styles/_themes.scss deleted file mode 100644 index 9df5cd925..000000000 --- a/client/styles/_themes.scss +++ /dev/null @@ -1,278 +0,0 @@ -/** - * !!! NEVER INCLUDE THIS FILE IN A SCSS FILE - * See source doc here https://github.com/angular/material2/tree/master/src/lib/core/theming - */ -// Import theming files full relative way or karma will display warning -@use 'sass:map'; -@use '@angular/material' as mat; -@use '@ecodev/natural'; -@use 'components'; - -$artisans-blue: ( - 50: #e3f2fd, - 100: #bbdefb, - 200: #90caf9, - 300: #64b5f6, - 400: #42a5f5, - 500: #0e7ecb, - 600: #1e88e5, - 700: #1976d2, - 800: #1565c0, - 900: #0d47a1, - A100: #82b1ff, - A200: #448aff, - A400: #2979ff, - A700: #466287, - contrast: ( - 50: rgba(black, 0.87), - 100: rgba(black, 0.87), - 200: rgba(black, 0.87), - 300: rgba(black, 0.87), - 400: rgba(black, 0.87), - 500: white, - 600: white, - 700: white, - 800: white, - 900: white, - A100: rgba(black, 0.87), - A200: white, - A400: white, - A700: white, - ), -); - -$artisans-orange: ( - 50: #fbe9e7, - 100: #ffccbc, - 200: #ffab91, - 300: #ff8a65, - 400: #ff7043, - 500: #ef6031, - 600: #f4511e, - 700: #e64a19, - 800: #d84315, - 900: #bf360c, - A100: #f6f2e6, - A200: #ff6e40, - A400: #ff3d00, - A700: #dd2c00, - contrast: ( - 50: rgba(black, 0.87), - 100: rgba(black, 0.87), - 200: rgba(black, 0.87), - 300: rgba(black, 0.87), - 400: rgba(black, 0.87), - 500: white, - 600: white, - 700: white, - 800: white, - 900: white, - A100: rgba(black, 0.87), - A200: rgba(black, 0.87), - A400: white, - A700: white, - ), -); - -$artisans-green: ( - 50: #e0f2f1, - 100: #b2dfdb, - 200: #80cbc4, - 300: #4db6ac, - 400: #26a69a, - 500: #00ae8c, - 600: #00897b, - 700: #00796b, - 800: #00695c, - 900: #004d40, - A100: #a7ffeb, - A200: #64ffda, - A400: #1de9b6, - A700: #00bfa5, - contrast: ( - 50: rgba(black, 0.87), - 100: rgba(black, 0.87), - 200: rgba(black, 0.87), - 300: rgba(black, 0.87), - 400: rgba(black, 0.87), - 500: white, - 600: white, - 700: white, - 800: white, - 900: white, - A100: rgba(black, 0.87), - A200: rgba(black, 0.87), - A400: rgba(black, 0.87), - A700: rgba(black, 0.87), - ), -); - -// Configure themes -$artisans-primary: mat.m2-define-palette($artisans-blue); -$artisans-accent: mat.m2-define-palette($artisans-orange); -$artisans-warn: mat.m2-define-palette(mat.$m2-red-palette); -$artisans-theme: mat.m2-define-light-theme( - ( - color: ( - primary: $artisans-primary, - accent: $artisans-accent, - warn: $artisans-warn, - ), - ) -); - -@mixin applyTheme($theme) { - $foreground: map.get($theme, foreground); - color: mat.m2-get-color-from-palette($foreground, text); - - @include mat.autocomplete-color($theme); - @include mat.button-color($theme); - @include mat.button-toggle-color($theme); - @include mat.card-color($theme); - @include mat.checkbox-color($theme); - @include mat.chips-color($theme); - @include mat.core-color($theme); - @include mat.datepicker-color($theme); - @include mat.dialog-color($theme); - @include mat.divider-color($theme); - @include mat.expansion-color($theme); - @include mat.fab-color($theme); - @include mat.form-field-color($theme); - @include mat.icon-color($theme); - @include mat.icon-button-color($theme); - @include mat.input-color($theme); - @include mat.list-color($theme); - @include mat.menu-color($theme); - @include mat.paginator-color($theme); - @include mat.progress-spinner-color($theme); - @include mat.radio-color($theme); - @include mat.select-color($theme); - @include mat.sidenav-color($theme); - @include mat.slide-toggle-color($theme); - @include mat.snack-bar-color($theme); - @include mat.sort-color($theme); - @include mat.table-color($theme); - @include mat.tabs-color($theme); - @include mat.toolbar-color($theme); - @include mat.tooltip-color($theme); - @include mat.tree-color($theme); - - @include components.components-theme($theme); -} - -// Include Material bases, densities, typographies and core (only once !) -// Only 31 modules used on a total of 37 modules - -// This fake theme is only use to tell Material we use Material v2, and not v3. Colors are never used. -$fake-material-v2-theme: mat.m2-define-light-theme( - ( - color: ( - primary: mat.m2-define-palette(mat.$m2-indigo-palette), - accent: mat.m2-define-palette(mat.$m2-indigo-palette), - ), - ) -); - -@include mat.autocomplete-base($fake-material-v2-theme); -@include mat.button-base($fake-material-v2-theme); -@include mat.button-toggle-base($fake-material-v2-theme); -@include mat.card-base($fake-material-v2-theme); -@include mat.checkbox-base($fake-material-v2-theme); -@include mat.chips-base($fake-material-v2-theme); -@include mat.core-base($fake-material-v2-theme); -@include mat.datepicker-base($fake-material-v2-theme); -@include mat.dialog-base($fake-material-v2-theme); -@include mat.divider-base($fake-material-v2-theme); -@include mat.expansion-base($fake-material-v2-theme); -@include mat.fab-base($fake-material-v2-theme); -@include mat.form-field-base($fake-material-v2-theme); -@include mat.icon-base($fake-material-v2-theme); -@include mat.icon-button-base($fake-material-v2-theme); -@include mat.input-base($fake-material-v2-theme); -@include mat.list-base($fake-material-v2-theme); -@include mat.menu-base($fake-material-v2-theme); -@include mat.paginator-base($fake-material-v2-theme); -@include mat.progress-spinner-base($fake-material-v2-theme); -@include mat.radio-base($fake-material-v2-theme); -@include mat.select-base($fake-material-v2-theme); -@include mat.sidenav-base($fake-material-v2-theme); -@include mat.slide-toggle-base($fake-material-v2-theme); -@include mat.snack-bar-base($fake-material-v2-theme); -@include mat.sort-base($fake-material-v2-theme); -@include mat.table-base($fake-material-v2-theme); -@include mat.tabs-base($fake-material-v2-theme); -@include mat.toolbar-base($fake-material-v2-theme); -@include mat.tooltip-base($fake-material-v2-theme); -@include mat.tree-base($fake-material-v2-theme); - -@include mat.autocomplete-density(0); -@include mat.button-density(0); -@include mat.button-toggle-density(0); -@include mat.card-density(0); -@include mat.checkbox-density(0); -@include mat.chips-density(0); -@include mat.core-density(0); -@include mat.datepicker-density(0); -@include mat.dialog-density(0); -@include mat.divider-density(0); -@include mat.expansion-density(0); -@include mat.fab-density(0); -@include mat.form-field-density(0); -@include mat.icon-density(0); -@include mat.icon-button-density(0); -@include mat.input-density(0); -@include mat.list-density(0); -@include mat.menu-density(0); -@include mat.paginator-density(0); -@include mat.progress-spinner-density(0); -@include mat.radio-density(0); -@include mat.select-density(0); -@include mat.sidenav-density(0); -@include mat.slide-toggle-density(0); -@include mat.snack-bar-density(0); -@include mat.sort-density(0); -@include mat.table-density(0); -@include mat.tabs-density(0); -@include mat.toolbar-density(0); -@include mat.tooltip-density(0); -@include mat.tree-density(0); - -@include mat.typography-hierarchy(natural.$typography); -@include mat.autocomplete-typography(natural.$typography); -@include mat.button-typography(natural.$typography); -@include mat.button-toggle-typography(natural.$typography); -@include mat.card-typography(natural.$typography); -@include mat.checkbox-typography(natural.$typography); -@include mat.chips-typography(natural.$typography); -@include mat.core-typography(natural.$typography); -@include mat.datepicker-typography(natural.$typography); -@include mat.dialog-typography(natural.$typography); -@include mat.divider-typography(natural.$typography); -@include mat.expansion-typography(natural.$typography); -@include mat.fab-typography(natural.$typography); -@include mat.form-field-typography(natural.$typography); -@include mat.icon-typography(natural.$typography); -@include mat.icon-button-typography(natural.$typography); -@include mat.input-typography(natural.$typography); -@include mat.list-typography(natural.$typography); -@include mat.menu-typography(natural.$typography); -@include mat.paginator-typography(natural.$typography); -@include mat.progress-spinner-typography(natural.$typography); -@include mat.radio-typography(natural.$typography); -@include mat.select-typography(natural.$typography); -@include mat.sidenav-typography(natural.$typography); -@include mat.slide-toggle-typography(natural.$typography); -@include mat.snack-bar-typography(natural.$typography); -@include mat.sort-typography(natural.$typography); -@include mat.table-typography(natural.$typography); -@include mat.tabs-typography(natural.$typography); -@include mat.toolbar-typography(natural.$typography); -@include mat.tooltip-typography(natural.$typography); -@include mat.tree-typography(natural.$typography); - -@include mat.elevation-classes(); -@include mat.app-background(); - -body { - @include applyTheme($artisans-theme); -} diff --git a/client/styles/artisans.scss b/client/styles/artisans.scss new file mode 100644 index 000000000..18dc3dc7d --- /dev/null +++ b/client/styles/artisans.scss @@ -0,0 +1,75 @@ +/* + * Theme 1 (light ): + * Seed: #0E7ECB + * Core Colors: + * Primary: #0E7ECB + * Tertiary: #EF6031 + * Neutral: #FFFFFF + * Neutral Variant: #FFFFFF + * + * Theme 1 Builder Link: + * http://material-foundation.github.io/material-theme-builder/?primary=0E7ECB&tertiary=EF6031&neutral=FFFFFF&neutralVariant=FFFFFF + */ + +@use '@angular/material' as mat; +/* prettier-ignore */ +:root, :host, +[data-theme="artisansdelatransition"] { + @include mat.theme-overrides(( + primary: #005F9D, + primary-container: #0079C4, + primary-fixed: #D0E4FF, + primary-fixed-dim: #9CCAFF, + on-primary: #FFFFFF, + on-primary-container: #FDFCFF, + on-primary-fixed: #001D35, + on-primary-fixed-variant: #00497A, + inverse-primary: #9CCAFF, + + secondary: #45617F, + secondary-container: #BDDAFE, + secondary-fixed: #D0E4FF, + secondary-fixed-dim: #ACC9EC, + on-secondary: #FFFFFF, + on-secondary-container: #445F7E, + on-secondary-fixed: #001D35, + on-secondary-fixed-variant: #2C4966, + + tertiary: #AA3000, + tertiary-container: #EF6031, // not generated, set manually to match branding + tertiary-fixed: #FFDBD0, + tertiary-fixed-dim: #FFB59E, + on-tertiary: #FFFFFF, + on-tertiary-container: #FFFBFF, + on-tertiary-fixed: #3A0B00, + on-tertiary-fixed-variant: #852400, + + error: #BA1A1A, + error-container: #FFDAD6, + on-error: #FFFFFF, + on-error-container: #93000A, + + surface: #FCF8F8, + surface-variant: #E0E3E3, + on-surface: #1C1B1B, + on-surface-variant: #444748, + surface-dim: #DDD9D9, + surface-bright: #FCF8F8, + surface-container-lowest: #FFFFFF, + surface-container-low: #F6F3F2, + surface-container: #F1EDEC, + surface-container-high: #EBE7E7, + surface-container-highest: #E5E2E1, + surface-tint: #0062A1, + inverse-surface: #313030, + inverse-on-surface: #F4F0EF, + + background: #F8F9FF, + on-background: #181C21, + + outline: #747878, + outline-variant: #C4C7C8, + shadow: #000000, + scrim: #000000 + )); +} diff --git a/client/styles/material_guides.scss b/client/styles/material_guides.scss deleted file mode 100644 index 18bb10a65..000000000 --- a/client/styles/material_guides.scss +++ /dev/null @@ -1,64 +0,0 @@ -// Palettes background et foreground de material -// N'est utilisé par rien, mais est juste là à titre d'aide -// NE PAS SUPPRIMER - -nothing { - // Background light; - status-bar: #e0e0e0; - app-bar: #f5f5f5; - background: #fafafa; - hover: rgba(0, 0, 0, 0.04); - card: white; - dialog: white; - disabled-button: rgba(0, 0, 0, 0.12); - raised-button: white; - focused-button: rgba(0, 0, 0, 0.06); - selected-button: #e0e0e0; - selected-disabled-button: #bdbdbd; - disabled-button-toggle: #eeeeee; - - // Background dark; - status-bar: black; - app-bar: #212121; - background: #303030; - hover: rgba(255, 255, 255, 0.04); - card: #424242; - dialog: #424242; - disabled-button: rgba(255, 255, 255, 0.12); - raised-button: #424242; - focused-button: rgba(255, 255, 255, 0.06); - selected-button: #212121; - selected-disabled-button: #424242; - disabled-button-toggle: #000000; - - // Foreground light; - base: black; - divider: rgba(0, 0, 0, 0.12); - dividers: rgba(0, 0, 0, 0.12); - disabled: rgba(0, 0, 0, 0.38); - disabled-button: rgba(0, 0, 0, 0.38); - disabled-text: rgba(0, 0, 0, 0.38); - hint-text: rgba(0, 0, 0, 0.38); - secondary-text: rgba(0, 0, 0, 0.54); - icon: rgba(0, 0, 0, 0.54); - icons: rgba(0, 0, 0, 0.54); - text: rgba(0, 0, 0, 0.87); - slider-off: rgba(0, 0, 0, 0.26); - slider-off-active: rgba(0, 0, 0, 0.38); - - // Foreground dark - base: white; - divider: rgba(255, 255, 255, 0.12); - dividers: rgba(255, 255, 255, 0.12); - disabled: rgba(255, 255, 255, 0.3); - disabled-button: rgba(255, 255, 255, 0.3); - disabled-text: rgba(255, 255, 255, 0.3); - hint-text: rgba(255, 255, 255, 0.3); - secondary-text: rgba(255, 255, 255, 0.7); - icon: white; - icons: white; - text: white; - slider-min: white; - slider-off: rgba(255, 255, 255, 0.3); - slider-off-active: rgba(255, 255, 255, 0.3); -} From 4354bef1365e284fb89f9572aa3a1deca08837fa Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Thu, 20 Nov 2025 23:57:23 +0100 Subject: [PATCH 02/25] Update natural #11936 --- package.json | 2 +- yarn.lock | 39 +++++++-------------------------------- 2 files changed, 8 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index f544dca85..badc67f9d 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^20.0.0", - "@ecodev/natural": "^65.0.2", + "@ecodev/natural": "^66.0.1", "@ecodev/natural-editor": "^65.0.2", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index 560150a5c..5d5af08d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^65.0.2": - version "65.0.2" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-65.0.2.tgz#568a392fa6d5c388f0b9c5aa8335b517445a5fd1" - integrity sha512-rgdQMJiYdieiKioNJusvJ11imgRMIHzBFKdCxX7Zcb9hXhHG3xml6ejDC27GBEp2ILJ0ToLfqmVVNADC+447Rg== +"@ecodev/natural@^66.0.1": + version "66.0.1" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.1.tgz#38e2e609a9c50e51da84e78bbdc0d6e6f110a2c2" + integrity sha512-dJ3dxLPkiUVw6IpDvloEsvPKLuuqNikL1SP7QX1esVX/JJRZS6Qz0sK6Bo2IbWHSgtvm+mPK7L280rZI725bfg== dependencies: extract-files "^13.0.0" tslib "^2.8.1" @@ -6769,16 +6769,7 @@ string-env-interpolation@^1.0.1: resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -6805,14 +6796,7 @@ string-width@^7.0.0, string-width@^7.2.0: get-east-asian-width "^1.0.0" strip-ansi "^7.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -7237,7 +7221,7 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -7255,15 +7239,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 91f225bf77bd1fdc8fd5939b91e6d01277969ddd Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Fri, 21 Nov 2025 00:34:39 +0100 Subject: [PATCH 03/25] Update natural #11936 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index badc67f9d..708c99c96 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^20.0.0", - "@ecodev/natural": "^66.0.1", + "@ecodev/natural": "^66.0.2", "@ecodev/natural-editor": "^65.0.2", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index 5d5af08d4..b1159ada3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^66.0.1": - version "66.0.1" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.1.tgz#38e2e609a9c50e51da84e78bbdc0d6e6f110a2c2" - integrity sha512-dJ3dxLPkiUVw6IpDvloEsvPKLuuqNikL1SP7QX1esVX/JJRZS6Qz0sK6Bo2IbWHSgtvm+mPK7L280rZI725bfg== +"@ecodev/natural@^66.0.2": + version "66.0.2" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.2.tgz#f3f396c16df457428035c00e9590e3f04bbbd633" + integrity sha512-6ny15vM01e+SlmTbyJG4sTGuK/OFsspXanQB9IgU+znAtkVJqEYDLoB39f9ARmrL24trw9BjESHkzWg/ZAJVhQ== dependencies: extract-files "^13.0.0" tslib "^2.8.1" From ba56e1d193eba01ab3d35a11dc5160a73fdb00bc Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Wed, 26 Nov 2025 19:27:17 +0100 Subject: [PATCH 04/25] MD3 finetuning and consolidations #11936 --- client/styles.scss | 62 ++++++++++------------------------------------ package.json | 2 +- yarn.lock | 8 +++--- 3 files changed, 18 insertions(+), 54 deletions(-) diff --git a/client/styles.scss b/client/styles.scss index af5ad03b9..44cdb1d21 100644 --- a/client/styles.scss +++ b/client/styles.scss @@ -254,6 +254,7 @@ ng-progress { .pageHeader { padding-top: 20px; + .pageTitle { position: relative; min-width: 300px; @@ -367,55 +368,18 @@ app-subscriptions, ); } -//.rich-text a, -//a.app-link { -// &:not(.mat-mdc-button-base):not(.no-style) { -// border-bottom: 2px solid mat.m2-get-color-from-palette($primary); -// color: inherit; -// -// &:hover { -// color: mat.m2-get-color-from-palette($primary); -// } -// } -//} - .rich-text a, a.app-link { - //&:not(.mat-mdc-button-base):not(.no-style) { - cursor: pointer; - border-bottom: 2px solid var(--mat-sys-primary-container); - color: inherit; - text-decoration: none; - - &:hover { - color: var(--mat-sys-primary-container); + &:not(.mat-mdc-button-base):not(.no-style) { + border-bottom-width: 2px; + border-bottom-style: solid; + border-color: var(--mat-sys-primary); + color: var(--mat-sys-primary); + text-decoration: none; + + &:hover { + border-color: var(--mat-sys-tertiary-container); + color: var(--mat-sys-tertiary-container); + } } - //} -} - -// Admin part -//.rich-text.admin-editor { -// border-bottom: 1px solid mat.m2-get-color-from-palette($foreground, base, 0.5); -// border-top-right-radius: 4px; -// border-top-left-radius: 4px; -// background: mat.m2-get-color-from-palette( -// $foreground, -// base, -// if(map.get($theme, is-dark), 0.1, 0.04) -// ); // match official mat-form-field component style -// padding: 10px 10px 0 10px; -// font-size: 13px; -// -// .ql-editor { -// padding: 0.25em 0 0.75em 0; -// -// p { -// margin-bottom: 0; -// } -// } -// -// .label { -// opacity: 0.6; -// font-size: 0.9em; -// } -//} +} diff --git a/package.json b/package.json index 708c99c96..ef20206e4 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^20.0.0", "@ecodev/natural": "^66.0.2", - "@ecodev/natural-editor": "^65.0.2", + "@ecodev/natural-editor": "^66.0.2", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index b1159ada3..4bfffb5cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -908,10 +908,10 @@ dependencies: tslib "^2.8.1" -"@ecodev/natural-editor@^65.0.2": - version "65.0.2" - resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-65.0.2.tgz#4787d691749f434747b030e8ce54dc1234d690c9" - integrity sha512-0feg+8n5eflNv8SC1ITPz1cTjJFUGpBTlAvXQ5LgZ13F7P+Fme47qXiu7D+c+mOZKWOIfmSrO+3vwWLVm3hZeA== +"@ecodev/natural-editor@^66.0.2": + version "66.0.2" + resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.2.tgz#9569461149fe3e778ecaeb96f9b838c0780ae4ae" + integrity sha512-aEb4AoNh4VPh+Rlt4Z2epXaKX8vKNFdkUSxVg3NVpFTlrdw/uH0tqUc/AIiNulpQUJCRdpe5l2BPGjb6U9ox8g== dependencies: prosemirror-commands "^1.5.2" prosemirror-dropcursor "^1.8.1" From 428bc3edd245ecdb36ead93a608c5d7692866b14 Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Thu, 27 Nov 2025 03:36:20 +0100 Subject: [PATCH 05/25] MD3 typogaphy #11936 --- .../comments/comments/comments.component.html | 2 +- .../admin/events/events/events.component.html | 2 +- .../facilitator-document.component.html | 2 +- .../facilitator-documents.component.html | 2 +- .../app/admin/newses/news/news.component.html | 2 +- .../admin/newses/newses/newses.component.html | 2 +- .../order-line/order-line.component.html | 4 +- .../admin/order/order/order.component.html | 2 +- .../admin/order/orders/orders.component.html | 2 +- .../products/product/product.component.html | 12 +- .../products/products/products.component.html | 2 +- .../sessions/session/session.component.html | 8 +- .../sessions/sessions/sessions.component.html | 2 +- .../admin/users/import/import.component.html | 4 +- .../app/admin/users/user/user.component.html | 16 +- .../admin/users/users/users.component.html | 2 +- .../actions/actions.component.html | 12 +- .../agir-au-quotidien.component.html | 6 +- .../alimentation/alimentation.component.html | 6 +- .../alimentation/alimentation1.component.html | 6 +- .../agir-avec-nous/bns/bns.component.html | 30 +-- .../agir-avec-nous/bns/bns.component.scss | 4 +- .../desinvestir-fossile.component.html | 10 +- .../irremplacables-epiceries.component.html | 6 +- .../numerique-ethique.component.html | 6 +- ...port-epiceries-alternatives.component.html | 6 +- .../comite-status.component.html | 18 +- .../convictions/convictions.component.html | 6 +- .../partenariats/partenariats.component.html | 16 +- .../qui-sommes-nous.component.html | 8 +- .../circuits-courts.component.html | 6 +- .../comment-list/comment-list.component.html | 10 +- .../conditions-generales-vente.component.html | 32 +-- .../components/contact/contact.component.html | 6 +- .../event-page/event-page.component.html | 10 +- .../events-page/events-page.component.html | 4 +- .../faire-un-don/faire-un-don.component.html | 6 +- .../home-block/home-block.component.html | 4 +- .../homepage/homepage.component.html | 40 ++-- .../homepage/homepage.component.scss | 10 +- .../legal-mentions.component.html | 12 +- .../components/login/login.component.html | 2 +- .../news-page/news-page.component.html | 8 +- .../newses-page/newses-page.component.html | 6 +- .../points-de-vente.component.html | 192 +++++++++--------- .../components/projet/projet.component.html | 10 +- ...session-facilitator-private.component.html | 10 +- .../session-facilitator.component.html | 10 +- .../session-method.component.html | 8 +- .../session-organisation.component.html | 4 +- .../session-side-column.component.html | 10 +- .../sessions-incoming.component.html | 10 +- .../nous-faire-connaitre.component.html | 4 +- .../offrir-la-revue.component.html | 6 +- .../rejoindre-association.component.html | 6 +- .../front-office/front-office.component.html | 8 +- .../cart/components/cart/cart.component.html | 12 +- .../create-order/create-order.component.html | 14 +- .../product-page/product-page.component.html | 54 +++-- .../products-page.component.html | 24 +-- .../subscriptions.component.html | 24 +-- .../subscriptions.component.scss | 2 +- .../components/account/account.component.html | 8 +- .../components/history/history.component.html | 2 +- .../components/profile/profile.component.html | 8 +- .../components/profile/profile.component.scss | 2 +- .../purchases/purchases.component.html | 6 +- .../breadcrumbs/breadcrumbs.component.ts | 2 +- .../components/error/error.component.html | 2 +- .../change-password.component.html | 2 +- .../register/register.component.html | 6 +- .../request-password-reset.component.html | 2 +- 72 files changed, 406 insertions(+), 404 deletions(-) diff --git a/client/app/admin/comments/comments/comments.component.html b/client/app/admin/comments/comments/comments.component.html index 41f93ab26..c696f8c3b 100644 --- a/client/app/admin/comments/comments/comments.component.html +++ b/client/app/admin/comments/comments/comments.component.html @@ -1,7 +1,7 @@ @if (dataSource) {
-
+
{{ routeData?.seo.title }}
-
+
{{ routeData?.seo.title }}
-

Document

+

Document

-
+
{{ routeData?.seo.title }}
diff --git a/client/app/admin/newses/news/news.component.html b/client/app/admin/newses/news/news.component.html index 9a93d7911..fa3d6c33b 100644 --- a/client/app/admin/newses/news/news.component.html +++ b/client/app/admin/newses/news/news.component.html @@ -34,7 +34,7 @@ > -
Contenu
+
Contenu
diff --git a/client/app/admin/newses/newses/newses.component.html b/client/app/admin/newses/newses/newses.component.html index e24bd9403..2dbc1c437 100644 --- a/client/app/admin/newses/newses/newses.component.html +++ b/client/app/admin/newses/newses/newses.component.html @@ -1,7 +1,7 @@ @if (dataSource) {
-
+
{{ routeData?.seo.title }}
{{ data.seo.title }}
-
ou
+
ou
{{ data.seo.title }} /> @if (form.hasError('productXorSubscription')) { -

+

Une vente ne peut pas concerner à la fois un produit et un abonnement. C'est soit l'un, soit l'autre, soit rien du tout.

diff --git a/client/app/admin/order/order/order.component.html b/client/app/admin/order/order/order.component.html index c933da33c..cd55b3e8a 100644 --- a/client/app/admin/order/order/order.component.html +++ b/client/app/admin/order/order/order.component.html @@ -23,7 +23,7 @@

Commande du {{ data.model.creationDate | />
-
+
Total :
@if (data.model.balanceCHF !== '0.00') {
diff --git a/client/app/admin/order/orders/orders.component.html b/client/app/admin/order/orders/orders.component.html index 5e0bcba90..55ab714a8 100644 --- a/client/app/admin/order/orders/orders.component.html +++ b/client/app/admin/order/orders/orders.component.html @@ -1,7 +1,7 @@ @if (dataSource) {
-
+
{{ routeData?.seo.title }}
-
Description
+
Description

@@ -136,7 +136,7 @@ -

Prix

+

Prix

Prix par unité CHF @@ -170,7 +170,7 @@

Prix

-

Produit dématérialisé (PDF)

+

Produit dématérialisé (PDF)

Produit dématérialisé (PDF)

-

Illustration

+

Illustration

Illustration
-

Aperçu du produit

+

Aperçu du produit

Aperçu du produit
@if (isUpdatePage()) {
-

Tags

+

Tags

-
+
{{ routeData?.seo.title }}
{{ form.get('name')?.errors | errorMessage }} -
Description
+
Description

@@ -56,7 +56,7 @@
@if (datesForm) {
-

Dates de la session

+

Dates de la session

@for (date of datesForm.controls; track date) {
@@ -76,7 +76,7 @@

Dates de la session

} @if (isUpdatePage()) { -

Facilitateurs

+

Facilitateurs

Facilitateurs -

Formulaire d'inscription

+

Formulaire d'inscription

Url du formulaire diff --git a/client/app/admin/sessions/sessions/sessions.component.html b/client/app/admin/sessions/sessions/sessions.component.html index 23e1747e7..d74e761b4 100644 --- a/client/app/admin/sessions/sessions/sessions.component.html +++ b/client/app/admin/sessions/sessions/sessions.component.html @@ -1,7 +1,7 @@ @if (dataSource) {
-
+
{{ routeData?.seo.title }}
-

{{ routeData.seo.title }}

+

{{ routeData.seo.title }}

-

Uploadez un fichier CSV pour importer les utilisateurs et leur accès:

+

Uploadez un fichier CSV pour importer les utilisateurs et leur accès:

Don -
+
{{ cart.donationAmount | currency: currencyService.current.value }}
@@ -136,7 +136,7 @@ @if (!cart.isEmpty()) {
-
+
Total TTC : {{ cart.totalTaxInc | currency: currencyService.current.value }}
diff --git a/client/app/front-office/modules/cart/components/create-order/create-order.component.html b/client/app/front-office/modules/cart/components/create-order/create-order.component.html index eaf0a26d3..e61978291 100644 --- a/client/app/front-office/modules/cart/components/create-order/create-order.component.html +++ b/client/app/front-office/modules/cart/components/create-order/create-order.component.html @@ -2,7 +2,7 @@
-

MÉTHODE DE PAIEMENT

+

MÉTHODE DE PAIEMENT

MÉTHODE DE PAIEMENT Recevoir une facture
-

Votre adresse

+

Votre adresse

-

Adresse de facturation

+

Adresse de facturation

Adresse de facturation
Don
}
-
Prix total
-
+
Prix total
+
{{ cart.totalTaxInc | currency: currencyService.current.value }}
@@ -74,8 +74,8 @@

Adresse de facturation

@if (showConfirmationMessage) {
-

Merci pour votre commande

-

+

Merci pour votre commande

+

Consulter les articles et revues achetées dans mon compte . diff --git a/client/app/front-office/modules/shop/components/product-page/product-page.component.html b/client/app/front-office/modules/shop/components/product-page/product-page.component.html index 3cb57dd4e..a0f9fcf7d 100644 --- a/client/app/front-office/modules/shop/components/product-page/product-page.component.html +++ b/client/app/front-office/modules/shop/components/product-page/product-page.component.html @@ -6,13 +6,13 @@

@if (data.model.reviewNumber) { -
+
N° {{ data.model.reviewNumber }}
} @if (data.model.releaseDate) { -
+
{{ data.model.releaseDate | date: 'MMMM yyyy' | capitalize }}
} @@ -22,11 +22,11 @@ }
-

{{ data.model.name }}

+

{{ data.model.name }}

@if (data.model.readingDuration) { -
+
{{ data.model.readingDuration @@ -35,7 +35,7 @@

{{ data.model.name }}

}
-
+
@@ -56,7 +56,7 @@

{{ data.model.name }}

class="nat-text-primary nat-gap-5 nat-horizontal nat-align" (click)="articlesMenuOpen = !articlesMenuOpen" > - Voir les articles de ce numéro @@ -81,8 +81,8 @@

{{ data.model.name }}

[naturalSrcDensity]="`/api/image/${data.model.review.image.id}/300`" /> - Article issu de la revue - + Article issu de la revue + N° {{ data.model.review.reviewNumber }} {{ data.model.review.name }} @@ -92,8 +92,8 @@

{{ data.model.name }}

@if (!viewer) { -
-
Intéressé par ce contenu ?
+
+
Intéressé par ce contenu ?
Si vous êtes déjà abonné à la version numérique
connectez-vous ! @@ -105,16 +105,12 @@

{{ data.model.name }}

@if (data.model.file) {
-

Téléchargement

+

Téléchargement

@if (data.model.reviewNumber) { -

- Vous pouvez dès à présent télécharger cette revue en format numérique (PDF) -

+

Vous pouvez dès à présent télécharger cette revue en format numérique (PDF)

} @if (!data.model.reviewNumber) { -

- Vous pouvez dès à présent télécharger cet article en format numérique (PDF) -

+

Vous pouvez dès à présent télécharger cet article en format numérique (PDF)

}
@@ -131,15 +127,15 @@

Téléchargement

@if (showBuyPaper || showBuyDigital) {
@if (data.model.reviewNumber) { -
Acheter le numéro
+
Acheter le numéro
} @if (!data.model.reviewNumber) { -
Acheter cet article
+
Acheter cet article
}
@if (showBuyPaper) {
-
+
Téléchargement } @if (showBuyDigital) {
-
-
Pour continuer votre lecture ...
+
Pour continuer votre lecture ...
@if (title) { -
{{ title }}
+
{{ title }}
} @if (items && items.length) { @@ -17,15 +17,15 @@ @if (showTagsOnProducts) {
@for (tag of product.productTags; track tag) { - {{ tag.name }} }
} - {{ product.name }} + {{ + product.name + }} @if ($index <= 1 && product.illustration) {
@if (!product.file) { -
+
Abonné ou - +
} @if (product.file) { @@ -81,7 +81,7 @@
}
-
+
@if (product.reviewNumber) { N° {{ product.reviewNumber }} } @@ -91,16 +91,16 @@ }
- {{ product.name }}
+
Aucun résultat n'a été trouvé.
}
diff --git a/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.html b/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.html index 423d82013..075590b35 100644 --- a/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.html +++ b/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.html @@ -1,14 +1,14 @@ @if (subscriptions) {
-

S'ABONNER

-

+

S'ABONNER

+

Plus de 1000 articles de fond sur tous les thèmes qui touchent à la durabilité dans une soixantaine de pays. LaRevueDurable constitue l’une des plus importantes bases de données disponibles sur la durabilité et la transition écologique en français. Voici nos formules d’abonnement.

-

+

Si vous souhaitez offrir un abonnement, merci de contacter directement courriel@artisansdelatransition.org

@@ -17,10 +17,10 @@

S'ABONNER

Abonnements personnels -->
-

Abonnement personnel

+

Abonnement personnel

-
Abonnement papier
+
Abonnement papier

Arrive directement dans votre boîte aux lettres

Pour 2 ans = 3 numéros

@@ -29,9 +29,9 @@

Abonnement personnel

-
+
Abonnement numérique -
Disponible en format pdf
+
Disponible en format pdf

Vous êtes prévenu des nouvelles parutions par courriel

Accès illimité et instantané à plus de 1000 articles

@@ -42,7 +42,7 @@

Abonnement personnel

-
Abonnement papier et numérique (pdf)
+
Abonnement papier et numérique (pdf)

Vous offre le confort de la lecture sur papier et l’accès illimité à plus de 1000 articles

Pour 2 ans = 3 numéros

@@ -56,10 +56,10 @@

Abonnement personnel

Abonnements profesionnels -->
-

Abonnement professionnel

+

Abonnement professionnel

-
Abonnement papier
+
Abonnement papier

Arrive directement dans votre entreprise, collectivité, association

Pour 2 ans = 3 numéros

@@ -70,7 +70,7 @@

Abonnement professionnel

-
Abonnement numérique
+
Abonnement numérique

Vous êtes prévenu des nouvelles parutions par courriel

Accès illimité et instantané à plus de 1000 articles pour trois utilisateurs

Sur demande, il est possibilité d’ajouter des utilisateurs supplémentaires

@@ -83,7 +83,7 @@

Abonnement professionnel

-
Abonnement papier et numérique (pdf)
+
Abonnement papier et numérique (pdf)

Vous offre le confort de la lecture sur papier et l’accès illimité à plus de 1000 articles

Accès illimité et instantané à plus de 1000 articles pour trois utilisateurs

Sur demande, il est possibilité d’ajouter des utilisateurs supplémentaires

diff --git a/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.scss b/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.scss index dd2acb86f..dad08a92d 100644 --- a/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.scss +++ b/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.scss @@ -17,7 +17,7 @@ margin-bottom: 40px; } - & > *:not(.mat-h1) { + & > *:not(.mat-font-headline-sm) { display: flex; flex: 1; flex-direction: column; diff --git a/client/app/profile/components/account/account.component.html b/client/app/profile/components/account/account.component.html index 55a49b509..072fd7177 100644 --- a/client/app/profile/components/account/account.component.html +++ b/client/app/profile/components/account/account.component.html @@ -1,9 +1,9 @@
-

Données personnelles

+

Données personnelles

-

Compte

+

Compte

@@ -22,9 +22,9 @@

Compte

-

Adresse

+

Adresse

-

+

Il s'agit de votre adresse principale qui est utilisée pour la facturation et la livraison. Lors des commandes vous pourrez définir une adresse de facturation différente.

diff --git a/client/app/profile/components/history/history.component.html b/client/app/profile/components/history/history.component.html index fe32ca4c1..c0ebacf9b 100644 --- a/client/app/profile/components/history/history.component.html +++ b/client/app/profile/components/history/history.component.html @@ -1,6 +1,6 @@ @if (dataSource) {
-

Commandes

+

Commandes

diff --git a/client/app/profile/components/profile/profile.component.html b/client/app/profile/components/profile/profile.component.html index f067e6949..774d8b163 100644 --- a/client/app/profile/components/profile/profile.component.html +++ b/client/app/profile/components/profile/profile.component.html @@ -2,14 +2,14 @@
-
Bonjour {{ viewer.firstName }},
+
Bonjour {{ viewer.firstName }},
-
Mon abonnement à LaRevueDurable
+
Mon abonnement à LaRevueDurable
@if (viewer.subscriptionLastReviewNumber) {
Abonné {{ viewer.subscriptionType | enum: 'ProductType' | async }} jusqu'au numéro{{ @@ -27,7 +27,7 @@ }
-
Mon statut Artisans de la transition
+
Mon statut Artisans de la transition
{{ viewer.membership | enum: 'Membership' | async }}
@if (membershipProduct) {
-
Mon compte
+
Mon compte
-

Articles achetés

+

Articles achetés

Articles achetés }
-
+
@if (orderLine.product.reviewNumber) { N° {{ orderLine.product.reviewNumber }} } @@ -35,7 +35,7 @@

Articles achetés

{{ orderLine.product.name }} diff --git a/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts b/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts index 54c0d97df..5ae6b669e 100644 --- a/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts +++ b/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts @@ -19,7 +19,7 @@ export class BreadcrumbsComponent implements OnInit { private readonly router = inject(Router); private readonly destroyRef = inject(DestroyRef); - @HostBinding('class.mat-body') private isBody = true; + @HostBinding('class.') private isBody = true; @Input() public breadcrumbs: Breadcrumb[] = []; diff --git a/client/app/shared/components/error/error.component.html b/client/app/shared/components/error/error.component.html index d8e8ee77b..f31d7670f 100644 --- a/client/app/shared/components/error/error.component.html +++ b/client/app/shared/components/error/error.component.html @@ -1,6 +1,6 @@
-

+

Oups, une erreur est survenue

diff --git a/client/app/user/components/change-password/change-password.component.html b/client/app/user/components/change-password/change-password.component.html index f478212ad..4f0efed2e 100644 --- a/client/app/user/components/change-password/change-password.component.html +++ b/client/app/user/components/change-password/change-password.component.html @@ -1,6 +1,6 @@
-

Changement de mot de passe

+

Changement de mot de passe

diff --git a/client/app/user/components/register/register.component.html b/client/app/user/components/register/register.component.html index 32cb53a0e..03d1bfda9 100644 --- a/client/app/user/components/register/register.component.html +++ b/client/app/user/components/register/register.component.html @@ -1,6 +1,6 @@
-

{{ route.snapshot.data.seo.title }}

+

{{ route.snapshot.data.seo.title }}

email @@ -12,12 +12,12 @@

{{ route.snapshot.data.seo.title }}

@if (step === 2) {
-

Compte

+

Compte

-

Coordonnées

+

Coordonnées

} diff --git a/client/app/user/components/request-password-reset/request-password-reset.component.html b/client/app/user/components/request-password-reset/request-password-reset.component.html index 3c3de97b8..0b07b8771 100644 --- a/client/app/user/components/request-password-reset/request-password-reset.component.html +++ b/client/app/user/components/request-password-reset/request-password-reset.component.html @@ -1,6 +1,6 @@
-

Demande de changement de mot de passe

+

Demande de changement de mot de passe

Email From 980b6ef7a2fddbb6d3432bae39a1ec211c26c76e Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Fri, 28 Nov 2025 04:10:53 +0100 Subject: [PATCH 06/25] MD3 Typography step 2 #11936 --- client/app/admin/admin/admin.component.scss | 4 ++++ .../comments/comments/comments.component.html | 2 +- .../admin/events/events/events.component.html | 2 +- .../facilitator-documents.component.html | 2 +- .../admin/newses/newses/newses.component.html | 2 +- .../app/admin/order/orders/orders.component.html | 2 +- .../products/products/products.component.html | 2 +- .../sessions/session/session.component.html | 2 +- .../sessions/sessions/sessions.component.html | 2 +- .../app/admin/users/users/users.component.html | 2 +- .../desinvestir-fossile.component.html | 4 ++-- .../components/homepage/homepage.component.html | 4 ++-- .../sessions-incoming.component.html | 2 +- .../app/front-office/front-office.component.html | 2 +- .../create-order/create-order.component.html | 2 +- .../product-page/product-page.component.html | 6 +++--- .../components/account/account.component.html | 2 +- .../components/profile/profile.component.html | 2 +- package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 20 files changed, 35 insertions(+), 31 deletions(-) diff --git a/client/app/admin/admin/admin.component.scss b/client/app/admin/admin/admin.component.scss index cabb38ed8..914d9a56d 100644 --- a/client/app/admin/admin/admin.component.scss +++ b/client/app/admin/admin/admin.component.scss @@ -35,3 +35,7 @@ natural-sidenav-content { ) ); } + +::ng-deep app-admin .mat-font-title-lg { + margin-bottom: 0.3em; +} diff --git a/client/app/admin/comments/comments/comments.component.html b/client/app/admin/comments/comments/comments.component.html index c696f8c3b..c6146ad22 100644 --- a/client/app/admin/comments/comments/comments.component.html +++ b/client/app/admin/comments/comments/comments.component.html @@ -1,7 +1,7 @@ @if (dataSource) {
-
+
{{ routeData?.seo.title }}
-
+
{{ routeData?.seo.title }}
-
+
{{ routeData?.seo.title }}
diff --git a/client/app/admin/newses/newses/newses.component.html b/client/app/admin/newses/newses/newses.component.html index 2dbc1c437..4f57d9a70 100644 --- a/client/app/admin/newses/newses/newses.component.html +++ b/client/app/admin/newses/newses/newses.component.html @@ -1,7 +1,7 @@ @if (dataSource) {
-
+
{{ routeData?.seo.title }}
-
+
{{ routeData?.seo.title }}
-
+
{{ routeData?.seo.title }}
Dates de la session } @if (isUpdatePage()) { -

Facilitateurs

+

Facilitateurs

-
+
{{ routeData?.seo.title }}
-
+
{{ routeData?.seo.title }}
DÉSINVESTIR DE L’INDUSTRIE DES ÉNERGIES FOS
-

Rapports BNS

+

Rapports BNS

En savoir plus
@if (data.model.reviewNumber) { -
+
N° {{ data.model.reviewNumber }}
} @if (data.model.releaseDate) { -
+
{{ data.model.releaseDate | date: 'MMMM yyyy' | capitalize }}
} @@ -93,7 +93,7 @@

{{ data.model.name }}

@if (!viewer) {
-
Intéressé par ce contenu ?
+
Intéressé par ce contenu ?
Si vous êtes déjà abonné à la version numérique
connectez-vous ! diff --git a/client/app/profile/components/account/account.component.html b/client/app/profile/components/account/account.component.html index 072fd7177..df8620534 100644 --- a/client/app/profile/components/account/account.component.html +++ b/client/app/profile/components/account/account.component.html @@ -1,5 +1,5 @@
-

Données personnelles

+

Données personnelles

diff --git a/client/app/profile/components/profile/profile.component.html b/client/app/profile/components/profile/profile.component.html index 774d8b163..faea5fb74 100644 --- a/client/app/profile/components/profile/profile.component.html +++ b/client/app/profile/components/profile/profile.component.html @@ -2,7 +2,7 @@
-
Bonjour {{ viewer.firstName }},
+
Bonjour {{ viewer.firstName }},
@@ -50,9 +50,9 @@
Conversations carbone - - Documents facilitateurs - + Documents facilitateurs diff --git a/client/app/admin/order/order-line/order-line.component.html b/client/app/admin/order/order-line/order-line.component.html index 318f997ae..df7e5e3d4 100644 --- a/client/app/admin/order/order-line/order-line.component.html +++ b/client/app/admin/order/order-line/order-line.component.html @@ -37,9 +37,9 @@

{{ data.seo.title }}

- + - diff --git a/client/app/admin/order/order-lines/order-lines.component.html b/client/app/admin/order/order-lines/order-lines.component.html index 2c3803ead..52e6427a6 100644 --- a/client/app/admin/order/order-lines/order-lines.component.html +++ b/client/app/admin/order/order-lines/order-lines.component.html @@ -9,7 +9,8 @@ [multipleGroups]="true" [selections]="naturalSearchSelections" (selectionChange)="search($event)" - />§ + /> + § Commande du {{ data.model.creationDate | - + diff --git a/client/app/admin/products/product/product.component.html b/client/app/admin/products/product/product.component.html index 0b408e010..5b4ef003e 100644 --- a/client/app/admin/products/product/product.component.html +++ b/client/app/admin/products/product/product.component.html @@ -33,7 +33,7 @@ Code @if (form.get('code')?.hasError('duplicateValue')) { - Ce code est déjà attribué à un produit + Ce code est déjà attribué à un produit } @else { {{ form.get('code')?.errors | errorMessage }} } @@ -69,11 +69,11 @@
Disponible à la vente - + >Disponible à la vente Mettre en avant - + >Mettre en avant
Un produit ne peut pas être à la fois une revue et un article. Il faut soit entrer un - numéro de revue pour une revue, soit choisir une revue existante pour un article. - + numéro de revue pour une revue, soit choisir une revue existante pour un + article. } diff --git a/client/app/admin/sessions/session/session.component.html b/client/app/admin/sessions/session/session.component.html index da5e5236a..4e6993940 100644 --- a/client/app/admin/sessions/session/session.component.html +++ b/client/app/admin/sessions/session/session.component.html @@ -27,8 +27,8 @@ Ce champ est masqué à l'utilisateur mais est utilisé pour l'ordre des sessions - + >Ce champ est masqué à l'utilisateur mais est utilisé pour l'ordre des sessions @@ -38,8 +38,9 @@ Ce champ est masqué à l'utilisateur mais il est utilisé à des fins d'administration - + >Ce champ est masqué à l'utilisateur mais il est utilisé à des fins + d'administration @@ -63,12 +64,12 @@

Dates de la session

Date
-
} - diff --git a/client/app/admin/sessions/sessions/sessions.component.html b/client/app/admin/sessions/sessions/sessions.component.html index a1f3bb2ac..966c995e4 100644 --- a/client/app/admin/sessions/sessions/sessions.component.html +++ b/client/app/admin/sessions/sessions/sessions.component.html @@ -42,7 +42,7 @@ @for (f of element.facilitators; track f) {
} diff --git a/client/app/admin/users/import/import.component.html b/client/app/admin/users/import/import.component.html index 31c0a14e3..8fcdc8346 100644 --- a/client/app/admin/users/import/import.component.html +++ b/client/app/admin/users/import/import.component.html @@ -5,7 +5,7 @@

{{ routeData.seo.title }}

Uploadez un fichier CSV pour importer les utilisateurs et leur accès:

@@ -73,7 +73,7 @@

{{ routeData.seo.title }}

@for (error of errors; track error) {

- + {{ error }}

} diff --git a/client/app/admin/users/user/user.component.html b/client/app/admin/users/user/user.component.html index 39ef64f85..7b32c20c0 100644 --- a/client/app/admin/users/user/user.component.html +++ b/client/app/admin/users/user/user.component.html @@ -7,10 +7,10 @@ /> @if (isUpdatePage() && data.model.shouldDelete) { - Cet utilisateur n'existe pas dans Crésus. Il doit soit être ajouté dans Crésus, soit être supprimé - définitivement ici. - + définitivement ici. } @@ -32,7 +32,7 @@

Compte

email @if (form.get('email')?.hasError('duplicateValue')) { - Cet email est déjà attribué + Cet email est déjà attribué } @else { {{ form.get('email')?.errors | errorMessage }} } @@ -48,9 +48,8 @@

Compte

formControlName="isPublicFacilitator" class="nat-margin-bottom" (change)="update()" + >Facilitateur public - Facilitateur public -

État

Informer

- LaRevueDurable est une revue indépendante franco-suisse sur l’écologie, la durabilité et la - transition. + LaRevueDurable + est une revue indépendante franco-suisse sur l’écologie, la durabilité et la transition.

@@ -36,7 +36,8 @@

TOUTES NOS ACTIONS

se sent concerné au point de vouloir s’impliquer, et on se met à agir. Les trois axes se renforcent ensuite les uns les autres. Cette façon d’envisager l’engagement se fonde sur vingt ans d’enquêtes et d’expériences sur le terrain menés pour, avec et grâce à - LaRevueDurable. + LaRevueDurable + .

diff --git a/client/app/front-office/components/agir-avec-nous/agir-au-quotidien/agir-au-quotidien.component.html b/client/app/front-office/components/agir-avec-nous/agir-au-quotidien/agir-au-quotidien.component.html index e366d2249..784b21bfc 100644 --- a/client/app/front-office/components/agir-avec-nous/agir-au-quotidien/agir-au-quotidien.component.html +++ b/client/app/front-office/components/agir-avec-nous/agir-au-quotidien/agir-au-quotidien.component.html @@ -14,13 +14,17 @@

AGIR AU QUOTIDIEN

pérenniser et faire fructifier cette expérience inédite.
  • - Après la sortie du numéro 63 de LaRevueDurable , les - Artisans de la transition ont mis sur pied un cycle de quatre ateliers, dans quatre - villes de Suisse romande, à propos du capitalisme de surveillance et des alternatives libres et - éthique aux services des Gafam. Voici les principaux conseils issus de ces ateliers : + Après la sortie du numéro 63 de + LaRevueDurable + , les + Artisans de la transition + ont mis sur pied un cycle de quatre ateliers, dans quatre villes de Suisse romande, à propos du + capitalisme de surveillance et des alternatives libres et éthique aux services des Gafam. Voici les + principaux conseils issus de ces ateliers : Guide pour l’informatique éthique. + > + .
  • Guide pour des habits durables
  • diff --git a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html index dd7ecd0d7..b3bb7bd5a 100644 --- a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html +++ b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html @@ -11,35 +11,41 @@

    ALIMENTATION

    De nombreuses personnes – producteurs, transformatrices, distributeurs, restauratrices et mangeurs – s’efforcent de rendre l’agriculture et l’alimentation plus saine, meilleure pour les sols, le climat et - la biodiversité, plus équitable et accessible. Les Artisans de la transition veulent - appuyer leurs démarches pour construire des circuits courts alimentaires artisanaux collectifs et faire - de ces circuits les supports à un changement de système alimentaire. + la biodiversité, plus équitable et accessible. Les + Artisans de la transition + veulent appuyer leurs démarches pour construire des circuits courts alimentaires artisanaux collectifs + et faire de ces circuits les supports à un changement de système alimentaire.

    - En 2021, les Artisans de la transition ont publié un dossier de LaRevueDurable sur ce - thème et écrit et produit un documentaire de 37 minutes, Manger, c’est politique !, qui raconte la - construction de quatre circuits courts alimentaires artisanaux collectifs au sein de l’agroécoquartier - Les Vergers, à Meyrin, dans le canton de Genève. Ce film, qui met notamment en avant le supermarché - participatif paysan La Fève, a fait l’objet d’une soixantaine de projections, principalement en Suisse - romande, suivies de discussions avec des acteurs et des actrices locales de ces circuits. + En 2021, les + Artisans de la transition + ont publié un dossier de LaRevueDurable sur ce thème et écrit et produit un documentaire de 37 minutes, + Manger, c’est politique !, qui raconte la construction de quatre circuits courts alimentaires artisanaux + collectifs au sein de l’agroécoquartier Les Vergers, à Meyrin, dans le canton de Genève. Ce film, qui + met notamment en avant le supermarché participatif paysan La Fève, a fait l’objet d’une soixantaine de + projections, principalement en Suisse romande, suivies de discussions avec des acteurs et des actrices + locales de ces circuits.

    - Pour organiser ces projections-débats, les Artisans de la transition ont sollicité, - partout en Suisse romande, l’appui d’épiceries alternatives qui se sont souvent révélées enthousiastes - et proactives. Bio, vrac, participatives ou coopératives de productrices et de producteurs, ces - commerces trop peu valorisés sont alternatifs à la grande distribution et à l’industrialisation - systématique insoutenable du système alimentaire. De leur enthousiasme est née l’envie de mieux les - connaître, de les étudier de près, d’examiner leurs actions et leurs dynamiques. + Pour organiser ces projections-débats, les + Artisans de la transition + ont sollicité, partout en Suisse romande, l’appui d’épiceries alternatives qui se sont souvent révélées + enthousiastes et proactives. Bio, vrac, participatives ou coopératives de productrices et de + producteurs, ces commerces trop peu valorisés sont alternatifs à la grande distribution et à + l’industrialisation systématique insoutenable du système alimentaire. De leur enthousiasme est née + l’envie de mieux les connaître, de les étudier de près, d’examiner leurs actions et leurs dynamiques.

    - Les Artisans de la transition ont ainsi analysé l’évolution des épiceries alternatives - en Suisse romande de 2010 à 2023, mené 48 entretiens avec 55 gérantes et gérants, et réuni des épiceries - alternatives à Neuchâtel, Lausanne, Fribourg et Bienne pour les encourager à coopérer. A Fribourg, ils - ont stimulé et accompagné la création de l’association d’épiceries alternatives fribourgeoises EpiFri et - organisé son assemblée constitutive le 6 juillet 2023. + Les + Artisans de la transition + ont ainsi analysé l’évolution des épiceries alternatives en Suisse romande de 2010 à 2023, mené 48 + entretiens avec 55 gérantes et gérants, et réuni des épiceries alternatives à Neuchâtel, Lausanne, + Fribourg et Bienne pour les encourager à coopérer. A Fribourg, ils ont stimulé et accompagné la création + de l’association d’épiceries alternatives fribourgeoises EpiFri et organisé son assemblée constitutive + le 6 juillet 2023.

    @@ -58,38 +64,37 @@

    ALIMENTATION

    - Car tous ces efforts renforcent chez les Artisans de la transition la conviction que - ces commerces alternatifs portent en eux un vrai potentiel pour rendre le système alimentaire - soutenable. Ils leur apparaissent irremplaçables en tant que lieux « carrefours » où tous les - acteurs et toutes les actrices des circuits courts alimentaires artisanaux ont l’occasion de se croiser, - d’échanger et, potentiellement, de coopérer à cette fin. + Car tous ces efforts renforcent chez les + Artisans de la transition + la conviction que ces commerces alternatifs portent en eux un vrai potentiel pour rendre le système + alimentaire soutenable. Ils leur apparaissent irremplaçables en tant que lieux « carrefours » + où tous les acteurs et toutes les actrices des circuits courts alimentaires artisanaux ont l’occasion de + se croiser, d’échanger et, potentiellement, de coopérer à cette fin.

    - Plus de 65 épiceries alternatives ont signé une prise de - position commune qui attire l’attention sur leur action et leur volonté de participer à la construction - d’un système alimentaire plus juste et soutenable. L’idée et l’espoir sont que cette première action - collective en augure d’autres sur la durée. + Plus de + 65 épiceries alternatives + ont signé une prise de position commune qui attire l’attention sur leur action et leur volonté de + participer à la construction d’un système alimentaire plus juste et soutenable. L’idée et l’espoir sont + que cette première action collective en augure d’autres sur la durée.

    - Pour renforcer cet élan, les Artisans de la transition sortiront début 2025 un dossier - de LaRevueDurable sur les atouts des épiceries alternatives et les moyens de les fortifier et un nouveau - film documentaire, - Irremplaçables épiceries!, qui relie leur - action et leur engagement à une vision de l’agriculture dite « paysanne » avec laquelle elles sont - alignées et qu’elles pourraient promouvoir. + Pour renforcer cet élan, les + Artisans de la transition + sortiront début 2025 un dossier de LaRevueDurable sur les atouts des épiceries alternatives et les + moyens de les fortifier et un nouveau film documentaire, + Irremplaçables épiceries! + , qui relie leur action et leur engagement à une vision de l’agriculture dite « paysanne » avec laquelle + elles sont alignées et qu’elles pourraient promouvoir.

    diff --git a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation1.component.html b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation1.component.html index 4215f90c2..ab8b539ac 100644 --- a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation1.component.html +++ b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation1.component.html @@ -9,51 +9,64 @@

    ALIMENTATION

    - L’alimentation a toujours été au centre du travail de LaRevueDurable, puis des - Artisans de la transition. Ce thème très populaire dans la population génère de - nombreuses initiatives chez les professionnels à tous les maillons des circuits alimentaires. + L’alimentation a toujours été au centre du travail de + LaRevueDurable + , puis des + Artisans de la transition + . Ce thème très populaire dans la population génère de nombreuses initiatives chez les professionnels à + tous les maillons des circuits alimentaires.

    De très nombreuses personnes – producteurs, transformatrices, distributeurs, restauratrices et mangeurs – s’efforcent de rendre l’agriculture et l’alimentation plus saine, meilleure pour les sols, le climat - et la biodiversité, plus juste et équitable. Les Artisans de la transition se donnent - pour mission d’appuyer leurs démarches afin de promouvoir la construction de circuits courts + et la biodiversité, plus juste et équitable. Les + Artisans de la transition + se donnent pour mission d’appuyer leurs démarches afin de promouvoir la construction de circuits courts alimentaires collectifs.

    - En juillet 2021, LaRevueDurable a publié un dossier - sur ce thème. + En juillet 2021, + LaRevueDurable + a publié un dossier + sur ce thème + .

    - Grâce à ce travail d’enquête et rédactionnel, les Artisans de la transition ont pu - écrire et produire un documentaire, Manger, c’est politique ! dont la première a eu lieu en septembre, à - Lausanne. Ce film de 37 minutes raconte la construction de quatre circuits courts alimentaires - collectifs à Meyrin, dans le canton de Genève. + Grâce à ce travail d’enquête et rédactionnel, les + Artisans de la transition + ont pu écrire et produire un documentaire, Manger, c’est politique ! dont la première a eu lieu en + septembre, à Lausanne. Ce film de 37 minutes raconte la construction de quatre circuits courts + alimentaires collectifs à Meyrin, dans le canton de Genève.

    - D’octobre à novembre 2021, les Artisans de la transition ont organisé ou coorganisé - cinq soirées lors desquelles ce film a été projeté, suivi de discussions avec des acteurs et des - actrices locales des circuits courts. Une quarantaine d’intervenants et plus de 600 personnes ont - participé à ces soirées. + D’octobre à novembre 2021, les + Artisans de la transition + ont organisé ou coorganisé cinq soirées lors desquelles ce film a été projeté, suivi de discussions avec + des acteurs et des actrices locales des circuits courts. Une quarantaine d’intervenants et plus de 600 + personnes ont participé à ces soirées.

    - Aujourd’hui, les Artisans de la transition invitent les personnes qui ont aimé ce film - à organiser une projection suivie d’une discussion si possible en présence d’élus dans un contexte - associatif ou au sein d’établissements d’enseignement. Si l’idée vous tente, vous trouverez plus - d’informations + Aujourd’hui, les + Artisans de la transition + invitent les personnes qui ont aimé ce film à organiser une projection suivie d’une discussion si + possible en présence d’élus dans un contexte associatif ou au sein d’établissements d’enseignement. Si + l’idée vous tente, vous trouverez plus d’informations ici .

    - La suite du projet alimentaire des Artisans de la transition passe par l’organisation - d’autres événements avec des acteurs et des actrices de l’alimentation soutenable pour promouvoir les - circuits cours alimentaires collectifs et lutter contre l’industrialisation toujours plus exacerbée de - l’alimentation et l’allongement des circuits alimentaires qui en résulte. + La suite du projet alimentaire des + Artisans de la transition + passe par l’organisation d’autres événements avec des acteurs et des actrices de l’alimentation + soutenable pour promouvoir les circuits cours alimentaires collectifs et lutter contre + l’industrialisation toujours plus exacerbée de l’alimentation et l’allongement des circuits alimentaires + qui en résulte.

    - Les Artisans de la transition voudraient notamment appuyer la dynamique émergente des - épiceries alternatives à la grande distribution et animer une veille sur les marges de manœuvre - cantonales et communales. + Les + Artisans de la transition + voudraient notamment appuyer la dynamique émergente des épiceries alternatives à la grande distribution + et animer une veille sur les marges de manœuvre cantonales et communales.

    Pour toute information, contactez diff --git a/client/app/front-office/components/agir-avec-nous/bns/bns.component.html b/client/app/front-office/components/agir-avec-nous/bns/bns.component.html index 312936ef6..6be234975 100644 --- a/client/app/front-office/components/agir-avec-nous/bns/bns.component.html +++ b/client/app/front-office/components/agir-avec-nous/bns/bns.component.html @@ -14,10 +14,11 @@

    Sur le climat, la BNS égare la place financière

    Fribourg, mardi 21 avril 2020. A trois jours de l’assemblée générale annuelle de la BNS, l’association - Artisans de la transition publie un nouveau rapport sur la politique de gestion des - risques climatiques de cette institution. Le constat est clair : la BNS n’a toujours pas pris la mesure - du risque systémique colossal et potentiellement irréversible que le changement climatique pose au - système financier et à l’ensemble de l’économie suisses. + Artisans de la transition + publie un nouveau rapport sur la politique de gestion des risques climatiques de cette institution. Le + constat est clair : la BNS n’a toujours pas pris la mesure du risque systémique colossal et + potentiellement irréversible que le changement climatique pose au système financier et à l’ensemble de + l’économie suisses.

    Selon la BNS, la Suisse n’étant pas en bord la mer, ses biens matériels étant bien assurés, la @@ -33,9 +34,7 @@

    Sur le climat, la BNS égare la place financière politique, une stratégie pour aplatir la courbe des risques climatiques.

    - Rapport BNS 2020 (pdf) - + Rapport BNS 2020 (pdf)

    Les investissements de la BNS dans l’industrie des énergies fossiles sont contraires aux intérêts de la @@ -45,17 +44,16 @@

    - Mardi 24 avril 2018, les Artisans de la transition publient une nouvelle étude sur les - placements de la Banque nationale suisse dans l’industrie des énergies fossiles aux Etats-Unis et au - Royaume-Uni. Alors que cette institution gère l’une des plus importantes fortunes au monde, elle n’a - toujours pas de politique climatique. Ce faisant, la BNS est en retard sur l’évolution de la finance - internationale, en contradiction avec les politiques climatiques fédérales et nuit aux intérêts de la - Suisse. + Mardi 24 avril 2018, les + Artisans de la transition + publient une nouvelle étude sur les placements de la Banque nationale suisse dans l’industrie des + énergies fossiles aux Etats-Unis et au Royaume-Uni. Alors que cette institution gère l’une des plus + importantes fortunes au monde, elle n’a toujours pas de politique climatique. Ce faisant, la BNS est en + retard sur l’évolution de la finance internationale, en contradiction avec les politiques climatiques + fédérales et nuit aux intérêts de la Suisse.

    - Rapport BNS 2018 (pdf) - + Rapport BNS 2018 (pdf) @@ -67,27 +65,31 @@

    - Jeudi 16 décembre, les Artisans de la transition publient un rapport sur les placements - de la Banque nationale suisse aux Etats-Unis. Pour les Artisans de la transition, South - Pole Group a passé en revue les 2535 titres que la BNS possède aux Etats-Unis, évalué les émissions de - CO2 dont ils sont responsables et l’évolution de leur valeur du 1er janvier 2013 au 31 - décembre 2015, date du dernier exercice pour lequel les émissions de CO2 des entreprises sont - connues. + Jeudi 16 décembre, les + Artisans de la transition + publient un rapport sur les placements de la Banque nationale suisse aux Etats-Unis. Pour les + Artisans de la transition + , South Pole Group a passé en revue les 2535 titres que la BNS possède aux Etats-Unis, évalué les + émissions de CO + 2 + dont ils sont responsables et l’évolution de leur valeur du 1er janvier 2013 au 31 décembre 2015, date + du dernier exercice pour lequel les émissions de CO + 2 + des entreprises sont connues.

    Les résultats sont éloquents : avec moins de 10 % de sa fortune placés à la Bourse des Etats-Unis, soit 61,5 milliards de dollars/francs (les deux monnaies sont à parité), la Banque nationale suisse - (BNS) émet autant de CO2 que la Suisse entière et contribue à placer le monde sur une - trajectoire de +4°C à +6°C de hausse de la température. Très loin, donc, de l’objectif de l’accord de - Paris qui vise à limiter cette hausse bien en dessous de 2°C. Et au lieu d’obtenir de solides rendements - financiers, la BNS a perdu, avec ses placements dans l’industrie fossile aux Etats-Unis, 4 milliards de - dollars/francs en trois ans. + (BNS) émet autant de CO + 2 + que la Suisse entière et contribue à placer le monde sur une trajectoire de +4°C à +6°C de hausse de la + température. Très loin, donc, de l’objectif de l’accord de Paris qui vise à limiter cette hausse bien en + dessous de 2°C. Et au lieu d’obtenir de solides rendements financiers, la BNS a perdu, avec ses + placements dans l’industrie fossile aux Etats-Unis, 4 milliards de dollars/francs en trois ans.

    - Rapport BNS 2016 (pdf) - + Rapport BNS 2016 (pdf)

    Deutsch

    @@ -99,11 +101,11 @@

    Die Nationalbank sendet dem Schweizer Finanzplatz 21. April 2020. Die Schweizerische Nationalbank (SNB) hat nach wie vor nicht begriffen, welch enormes Risiko der Klimawandel für das Schweizer Finanzsystem und die gesamte Wirtschaft darstellt. Zu diesem Schluss kommt eine Studie, welche der Verein - Artisans de la transition gemeinsam mit der Klima-Allianz Schweiz drei Tage vor der - Generalversammlung der SNB publiziert. Gemäss der SNB stellt der Klimawandel für die Schweizer - Wirtschaft und das Finanzsystem nur ein moderates Risiko dar: Die Schweiz liege nicht am Meer, ihre - Sachwerte seien gut versichert, die Redundanz der Bankrechenzentren sei gewährleistet und sie habe kaum - Schwerindustrie. + Artisans de la transition + gemeinsam mit der Klima-Allianz Schweiz drei Tage vor der Generalversammlung der SNB publiziert. Gemäss + der SNB stellt der Klimawandel für die Schweizer Wirtschaft und das Finanzsystem nur ein moderates + Risiko dar: Die Schweiz liege nicht am Meer, ihre Sachwerte seien gut versichert, die Redundanz der + Bankrechenzentren sei gewährleistet und sie habe kaum Schwerindustrie.

    @@ -114,25 +116,26 @@

    Die Nationalbank sendet dem Schweizer Finanzplatz Risikokurve zu entwickeln.

    - SNB Investitionen-Bericht 2020 (pdf) - + SNB Investitionen-Bericht 2020 (pdf)

    Prädikat klimaschädlich Studie zur Anlagepolitik der Schweizerischen Nationalbank

    - Am Dienstag, 24. April 2018, veröffentlichten die Artisans de la transition eine neue - Studie über die Investitionen der Schweizerischen Nationalbank in Fossile Unternehmen. Die BNS verwaltet - zwar eines der größten Vermögen der Welt, hat aber noch keine Klimapolitik. Damit hinkt Sie der - internationalen finanziellen Entwicklung hinterher, widerspricht der Klimapolitik des Bundes und schadet - den Interessen der Schweiz. + Am Dienstag, 24. April 2018, veröffentlichten die + Artisans de la transition + eine neue Studie über die Investitionen der Schweizerischen Nationalbank in Fossile Unternehmen. Die BNS + verwaltet zwar eines der größten Vermögen der Welt, hat aber noch keine Klimapolitik. Damit hinkt Sie + der internationalen finanziellen Entwicklung hinterher, widerspricht der Klimapolitik des Bundes und + schadet den Interessen der Schweiz.

    - SNB Investitionen-Bericht 2018 (pdf) - + SNB Investitionen-Bericht 2018 (pdf) @@ -147,9 +150,9 @@

    Artisans-Bericht zeigt zum ersten Mal die Klimawirkung der Investitionen der SNB auf.

    - SNB Investitionen-Bericht 2016 (pdf) - + SNB Investitionen-Bericht 2016 (pdf)

    English

    @@ -174,9 +177,9 @@

    climate risks curve as soon as possible.

    - SNB Investment’s 2020 report (pdf) - + SNB Investment’s 2020 report (pdf)

    The Swiss National Bank’s Investments in the Fossil Fuel Industry Inflicts Heavy Losses to Switzerland @@ -187,19 +190,22 @@

    With a portfolio of 865 billion dollars, the Swiss National Bank (SNB) is amongst the biggest public investors in the world. A new report published today shows that the known portion of the SNB's equity portfolio (95.6 billion dollars, representing 60 % of the bank's equity investments) was the source - of 48.5 million tons of CO2 in 2017. That’s more than the total emissions attributable to - Switzerland in 2016 (48.3 million tons), the last available data. + of 48.5 million tons of CO + 2 + in 2017. That’s more than the total emissions attributable to Switzerland in 2016 (48.3 million tons), + the last available data.

    - The report, issued by Artisans de la transition is based on research done by three - specialists: ISS-Ethix, 2°Investing initiative and Profundo. It shows that the SNB could tip the scales - in favour of the energy transition at no cost. Better still, with a significant benefice. ISS-Ethix has - calculated that if the SNB had divested 7.6 billion dollars that are invested into the most - carbon-intensive companies and had used this money instead to finance more climate-friendly companies, - it would have halved the emissions resulting from its equity portfolio and improved its financial - performance by 20 billion dollars over the last three years (between January 1st, 2015 and December - 31st, 2017). + The report, issued by + Artisans de la transition + is based on research done by three specialists: ISS-Ethix, 2°Investing initiative and Profundo. It shows + that the SNB could tip the scales in favour of the energy transition at no cost. Better still, with a + significant benefice. ISS-Ethix has calculated that if the SNB had divested 7.6 billion dollars that are + invested into the most carbon-intensive companies and had used this money instead to finance more + climate-friendly companies, it would have halved the emissions resulting from its equity portfolio and + improved its financial performance by 20 billion dollars over the last three years (between January 1st, + 2015 and December 31st, 2017).

    @@ -211,14 +217,14 @@

    is 0.85°C. The SNB is thus making the situation much worse for the country.

    - SNB Investment’s 2018 report (pdf) - + SNB Investment’s 2018 report (pdf)

    diff --git a/client/app/front-office/components/agir-avec-nous/desinvestir-fossile/desinvestir-fossile.component.html b/client/app/front-office/components/agir-avec-nous/desinvestir-fossile/desinvestir-fossile.component.html index 0bcc8d745..dc43df0fd 100644 --- a/client/app/front-office/components/agir-avec-nous/desinvestir-fossile/desinvestir-fossile.component.html +++ b/client/app/front-office/components/agir-avec-nous/desinvestir-fossile/desinvestir-fossile.component.html @@ -12,9 +12,10 @@

    DÉSINVESTIR DE L’INDUSTRIE DES ÉNERGIES FOS

    Etre sobre dans l’usage des combustibles et des carburants fossiles est fondamental pour baisser les - émissions de CO2. Il est tout aussi fondamental de s’attaquer en complément, avec toute la - vigueur nécessaire, à l’amont du cycle du carbone en posant un couvercle sur les puits et les mines - d’énergies fossiles. + émissions de CO + 2 + . Il est tout aussi fondamental de s’attaquer en complément, avec toute la vigueur nécessaire, à l’amont + du cycle du carbone en posant un couvercle sur les puits et les mines d’énergies fossiles.

    Cette action part du constat qu’il y a cinq fois plus d’énergies fossiles dans le sous-sol de la Terre @@ -27,7 +28,10 @@

    DÉSINVESTIR DE L’INDUSTRIE DES ÉNERGIES FOS En 2015, les Artisans de la transition ont lancé la première campagne publique pour appeler à désinvestir des 200 plus grandes entreprises d’énergie fossile du monde. Grâce à un crowdfunding, ils ont publié - le n°55 de LaRevueDurable + + le n°55 de + LaRevueDurable + qui décrit l’histoire et explique les fondements du désinvestissement et organisé deux cycles de trois conférences en partenariat avec la Ville de Genève et l’Université de Lausanne.

    @@ -43,11 +47,11 @@

    DÉSINVESTIR DE L’INDUSTRIE DES ÉNERGIES FOS

    En 2021, ils ont publié la note d’analyse - Pour le pire ou pour le meilleur + Pour le pire ou pour le meilleur . Et ce communiqué de presse en 2022 : La place financière suisse soutient l’expansion du charbon dans le monde - + >La place financière suisse soutient l’expansion du charbon dans le monde .

    @@ -55,14 +59,12 @@

    DÉSINVESTIR DE L’INDUSTRIE DES ÉNERGIES FOS
    diff --git a/client/app/front-office/components/agir-avec-nous/irremplacables-epiceries/irremplacables-epiceries.component.html b/client/app/front-office/components/agir-avec-nous/irremplacables-epiceries/irremplacables-epiceries.component.html index a5a8ca16b..eb12a78b2 100644 --- a/client/app/front-office/components/agir-avec-nous/irremplacables-epiceries/irremplacables-epiceries.component.html +++ b/client/app/front-office/components/agir-avec-nous/irremplacables-epiceries/irremplacables-epiceries.component.html @@ -40,19 +40,21 @@

    IRREMPLAÇABLES ÉPICERIES

    épiceries ont une place essentielle.

    - Les Artisans de la transition espèrent que ce film incitera les épiceries alternatives - à faire leur cette vision du système alimentaire. Il est rempli d’informations et stimule la discussion - en poussant à la mise en place ou au renforcement de politiques alimentaires ambitieuses. + Les Artisans de la transition + espèrent que ce film incitera les épiceries alternatives à faire leur cette vision du système + alimentaire. Il est rempli d’informations et stimule la discussion en poussant à la mise en place ou au + renforcement de politiques alimentaires ambitieuses.

    - Les Artisans de la transition sollicitent l’appui des épiceries alternatives et des - organisations paysannes qui défendent les circuits courts alimentaires artisanaux collectifs pour - organiser des projections à conditions qu’elles soient suivies d’une discussion dans un contexte - associatif, politique et éducatif. + Les Artisans de la transition + sollicitent l’appui des épiceries alternatives et des organisations paysannes qui défendent les circuits + courts alimentaires artisanaux collectifs pour organiser des projections à conditions qu’elles soient + suivies d’une discussion dans un contexte associatif, politique et éducatif.

    Si vous souhaitez organiser un tel événement, vous pouvez - remplir ce formulaire. + remplir ce formulaire + .

    diff --git a/client/app/front-office/components/agir-avec-nous/numerique-ethique/numerique-ethique.component.html b/client/app/front-office/components/agir-avec-nous/numerique-ethique/numerique-ethique.component.html index 9c37f1f89..3d133792b 100644 --- a/client/app/front-office/components/agir-avec-nous/numerique-ethique/numerique-ethique.component.html +++ b/client/app/front-office/components/agir-avec-nous/numerique-ethique/numerique-ethique.component.html @@ -27,8 +27,8 @@

    NUMÉRIQUE ÉTHIQUE

    En 2019, les Artisans de la transition ont publié le dossier - n°63 de LaRevueDurable sur ce mode opératoire - ultrapuissant incompatible avec la transition. En 2020, le dossier + n°63 de LaRevueDurable + sur ce mode opératoire ultrapuissant incompatible avec la transition. En 2020, le dossier n°64 de LaRevueDurable associait ce mode opératoire à la croissance fulgurante de l’industrie textile.

    diff --git a/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html b/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html index 47359366d..ca7cc1e03 100644 --- a/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html +++ b/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html @@ -4,11 +4,13 @@

    PREMIER RAPPORT SUR LES ÉPICERIES ALTERNATIVES

    - Paru le 20 novembre 2024, le rapport des Artisans de la transition Les épiceries - alternatives sont irremplaçables montre, pour la première fois, la claire dynamique positive des - épiceries alternatives en Suisse romande entre 2010 et 2023. Leur nombre a presque quadruplé pour - arriver à 149. Rapporté à l’évolution démographique, l’essor est encore plus frappant. Fin 2009, il y en - a environ une pour 50 000 habitants. Fin 2023, il y en a environ une pour 16 000 habitants. + Paru le 20 novembre 2024, le rapport des + Artisans de la transition + Les épiceries alternatives sont irremplaçables montre, pour la première fois, la claire dynamique + positive des épiceries alternatives en Suisse romande entre 2010 et 2023. Leur nombre a presque + quadruplé pour arriver à 149. Rapporté à l’évolution démographique, l’essor est encore plus frappant. + Fin 2009, il y en a environ une pour 50 000 habitants. Fin 2023, il y en a environ une pour 16 000 + habitants.

    @@ -21,17 +23,19 @@

    PREMIER RAPPORT SUR LES ÉPICERIES ALTERNATIVES 48 d’entre elles révèlent qu’elles sont bien plus que de simples canaux de distribution. A l’occasion de la sortie du rapport des Artisans de la transition, plus de 65 d’entre elles ont signé une prise de position pour défendre un système alimentaire plus juste et soutenable. Le site - https://epiceries-alternatives.ch permet de localiser - les épiceries alternatives signataires de sa région. + https://epiceries-alternatives.ch + permet de localiser les épiceries alternatives signataires de sa région.

    Pour soutenir ces épiceries, une voie est d’identifier tout ce qui peut motiver, stimuler, encourager à - y faire ses courses. Le rapport des Artisans de la transition identifie et analyse en - sus les obstacles à leur rayonnement, puis développe cinq propositions pour lever ces obstacles. + y faire ses courses. Le rapport des + Artisans de la transition + identifie et analyse en sus les obstacles à leur rayonnement, puis développe cinq propositions pour + lever ces obstacles.


    - Rapport 2024 (pdf) + Rapport 2024 (pdf)

    diff --git a/client/app/front-office/components/association/comite-status/comite-status.component.html b/client/app/front-office/components/association/comite-status/comite-status.component.html index a9f2df340..75e0ad9ac 100644 --- a/client/app/front-office/components/association/comite-status/comite-status.component.html +++ b/client/app/front-office/components/association/comite-status/comite-status.component.html @@ -10,8 +10,8 @@

    COMITÉ ET STATUTS

    Yvan Maillard Ardenti pilote le programme « Justice climatique » à la fondation Pain pour le prochain. Grand connaisseur de la finance éthique, il a été l’une des chevilles ouvrières du collectif Non au charbon ! qui, en 2008-2009, a fait capoter, avec les Amis de - LaRevueDurable, un projet d’investissement fribourgeois dans une centrale à charbon au - nord de l’Allemagne. + LaRevueDurable + , un projet d’investissement fribourgeois dans une centrale à charbon au nord de l’Allemagne.

    Secrétaire
    @@ -26,7 +26,8 @@

    COMITÉ ET STATUTS

    Stéphane Cuennet est géographe, journaliste et traducteur. Il propose des services rédactionnels sur tous les thèmes liés au territoire et à l’environnement. Il a longtemps assuré la présidence des Amis de - LaRevueDurable. + LaRevueDurable + .

    Berthe Darras est ingénieure agronome. Elle partage sa vie professionnelle entre la défense des paysans @@ -58,33 +59,21 @@

    COMITÉ ET STATUTS

    Statuts de l'association

    - à télécharger en PDF - + à télécharger en PDF

    Rapports annuels d'activité

    diff --git a/client/app/front-office/components/association/convictions/convictions.component.html b/client/app/front-office/components/association/convictions/convictions.component.html index f3bc2e2a6..d02af42f2 100644 --- a/client/app/front-office/components/association/convictions/convictions.component.html +++ b/client/app/front-office/components/association/convictions/convictions.component.html @@ -17,14 +17,15 @@

    NOS CONVICTIONS

     

    L’association - Artisans de la transition voudrait créer un maximum d’opportunités d’agir pour - construire une société soutenable. A cette fin : + Artisans de la transition + voudrait créer un maximum d’opportunités d’agir pour construire une société soutenable. A cette + fin :

    • elle informe et réfléchit avec - LaRevueDurable, revue semestrielle consacrée à l’écologie, des rapports et une - lettre d’information ; + LaRevueDurable + , revue semestrielle consacrée à l’écologie, des rapports et une lettre d’information ;
    • elle stimule l’implication personnelle grâce à la méthode des Conversations carbone, dont elle diff --git a/client/app/front-office/components/association/partenariats/partenariats.component.html b/client/app/front-office/components/association/partenariats/partenariats.component.html index fe41c62bb..474375ccc 100644 --- a/client/app/front-office/components/association/partenariats/partenariats.component.html +++ b/client/app/front-office/components/association/partenariats/partenariats.component.html @@ -13,8 +13,9 @@

      PARTENARIATS ET COOPÉRATIONS

      > en ligne depuis juin 2019. Elle valorise des projets d’enseignement, de recherche appliquée, de campus et de stratégie institutionnelle qui contribuent à la transition écologique. Chaque projet - est accompagné d’un article de LaRevueDurable, qui approfondit ou offre une autre - approche des thèmes abordés. + est accompagné d’un article de + LaRevueDurable + , qui approfondit ou offre une autre approche des thèmes abordés.

      logo hes-so
    @@ -27,8 +28,8 @@

    PARTENARIATS ET COOPÉRATIONS

    compétences transversales sur le développement durable.

    - logo cas + logo cas +
    @@ -36,7 +37,9 @@

    PARTENARIATS ET COOPÉRATIONS

    Hepia - Haute école du paysage, d’ingénierie et d’architecture de Genève

    - Depuis 2015, l’hepia abonne tous ses étudiants et son personnel à LaRevueDurable. + Depuis 2015, l’hepia abonne tous ses étudiants et son personnel à + LaRevueDurable + .

    logo hepia @@ -46,8 +49,10 @@

    PARTENARIATS ET COOPÉRATIONS

    - Après quatorze années passées à animer LaRevueDurable, Susana Jourdan et Jacques - Mirenowicz ont voulu étoffer leurs moyens de partager leurs compréhensions, convictions et amour du - présent et de l’avenir. L’écriture reste pour eux essentielle, mais fait partie, depuis mars 2016, - d’un ensemble de trois types d’actions, avec le travail sur soi pour agir de manière résolue et la - création d’opportunités stratégiques pour aider un maximum de personnes à construire une société - soutenable en actionnant quelques leviers bien ciblés. + Après quatorze années passées à animer + LaRevueDurable + , Susana Jourdan et Jacques Mirenowicz ont voulu étoffer leurs moyens de partager leurs + compréhensions, convictions et amour du présent et de l’avenir. L’écriture reste pour eux + essentielle, mais fait partie, depuis mars 2016, d’un ensemble de trois types d’actions, avec le + travail sur soi pour agir de manière résolue et la création d’opportunités stratégiques pour aider + un maximum de personnes à construire une société soutenable en actionnant quelques leviers bien + ciblés.

    @@ -53,8 +55,11 @@

    QUI SOMMES-NOUS ?

    Dans son itinétaire professionnel à nombreuses facettes, Nathalie se réjouit de soutenir une cause qui lui tient à cœur : le respect et la responsabilité face à la Création. Elle s’occupe - des abonnements à LaRevueDurable et de différentes tâches administratives liées - aux Artisans de la transition. + des abonnements à + LaRevueDurable + et de différentes tâches administratives liées aux + Artisans de la transition + .

    @@ -70,10 +75,12 @@

    QUI SOMMES-NOUS ?

    - Zélé et fidèle gardien de la ligne graphique de LaRevueDurable et de ses - émanations, Jean-Christophe Froidevaux mobilise son talent et son dévouement pour valoriser - graphiquement les documents, ce site internet et les idées des - Artisans de la transition. + Zélé et fidèle gardien de la ligne graphique de + LaRevueDurable + et de ses émanations, Jean-Christophe Froidevaux mobilise son talent et son dévouement pour + valoriser graphiquement les documents, ce site internet et les idées des + Artisans de la transition + .

    @@ -93,8 +100,9 @@

    QUI SOMMES-NOUS ?

    Elle traque maladresses et étourderies, fautes de frappe, d’orthographe, de grammaire, de convention, de typographie, etc. avec une fiabilité et une disponibilité jamais démenties. Anne - Florence vérifie aussi, lors de chaque bouclage de LaRevueDurable, les épreuves - peu avant leur envoi à l’imprimeur. + Florence vérifie aussi, lors de chaque bouclage de + LaRevueDurable + , les épreuves peu avant leur envoi à l’imprimeur.

    @@ -105,8 +113,10 @@

    QUI SOMMES-NOUS ?

    - Il illustre chaque dossier de LaRevueDurable de ses dessins talentueux et - évocateurs, colorés et vivants, recherchés et décalés. Une signature à part entière. + Il illustre chaque dossier de + LaRevueDurable + de ses dessins talentueux et évocateurs, colorés et vivants, recherchés et décalés. Une + signature à part entière.

    @@ -125,9 +135,9 @@

    QUI SOMMES-NOUS ?

    Formé en gestion publique, Amédée apporte son plein de vitalité dans l’œuvre des - Artisans de la transition pour façonner un monde plus juste et vivant. Il est - chargé de projets et participe notamment aux programme sur les circuits courts alimentaires - collectifs en Suisse romande. + Artisans de la transition + pour façonner un monde plus juste et vivant. Il est chargé de projets et participe notamment aux + programme sur les circuits courts alimentaires collectifs en Suisse romande.

    @@ -136,11 +146,13 @@

    QUI SOMMES-NOUS ?

    Une question de cohérence

    - Les Artisans de la transition s’efforcent chaque jour de mettre leurs actes en - cohérence avec leurs idées et leurs convictions. LaRevueDurable est imprimée - localement sur du papier recyclé. Elle est vendue uniquement par abonnement et dans des points de - vente ciblés pour éviter le gaspillage lié à la diffusion en kiosque. Elle est acheminée sous - plastique recyclé ou sous enveloppe en papier. + Les + Artisans de la transition + s’efforcent chaque jour de mettre leurs actes en cohérence avec leurs idées et leurs convictions. + LaRevueDurable + est imprimée localement sur du papier recyclé. Elle est vendue uniquement par abonnement et dans des + points de vente ciblés pour éviter le gaspillage lié à la diffusion en kiosque. Elle est acheminée + sous plastique recyclé ou sous enveloppe en papier.

    Le bureau utilise du courant 100 % solaire issu de la Coopérative Optima Solar Fribourg @@ -149,9 +161,10 @@

    Une question de cohérence

    presque exclusivement à pied, à vélo et en train.

    - Les Artisans de la transition s’engagent pour un numérique éthique sans - surveillance et ont renoncé pour cette raison, en 2019, à être présents sur les réseaux sociaux - Twitter et Facebook. + Les + Artisans de la transition + s’engagent pour un numérique éthique sans surveillance et ont renoncé pour cette raison, en 2019, à + être présents sur les réseaux sociaux Twitter et Facebook.

    diff --git a/client/app/front-office/components/circuits-courts/circuits-courts.component.html b/client/app/front-office/components/circuits-courts/circuits-courts.component.html index fdd675276..8823f5536 100644 --- a/client/app/front-office/components/circuits-courts/circuits-courts.component.html +++ b/client/app/front-office/components/circuits-courts/circuits-courts.component.html @@ -45,7 +45,8 @@

    MANGER C'EST POLITIQUE

    Ce documentaire a suscité beaucoup d’intérêt en Suisse et en France depuis son lancement fin 2021, et toutes les projections organisées ont toujours été suivies d’une discussion. Face à une demande croissante pour pouvoir le voir, les Artisans de la transition ont décidé de le rendre librement -
    accessible sur vimeo. + accessible sur vimeo + .

    diff --git a/client/app/front-office/components/comment-list/comment-list.component.html b/client/app/front-office/components/comment-list/comment-list.component.html index c9dbc163a..3a27774de 100644 --- a/client/app/front-office/components/comment-list/comment-list.component.html +++ b/client/app/front-office/components/comment-list/comment-list.component.html @@ -5,7 +5,7 @@ Rédiger un commentaire - Publier + Publier
    } @@ -16,13 +16,9 @@ @if (comment.authorName) {
    {{ comment.authorName }} - Posté le {{ comment.creationDate | date: 'longDate' }} + Posté le {{ comment.creationDate | date: 'longDate' }} @if (comment.permissions?.update) { - + } diff --git a/client/app/front-office/components/conditions-generales-vente/conditions-generales-vente.component.html b/client/app/front-office/components/conditions-generales-vente/conditions-generales-vente.component.html index 1d6178db2..9f4dbefd8 100644 --- a/client/app/front-office/components/conditions-generales-vente/conditions-generales-vente.component.html +++ b/client/app/front-office/components/conditions-generales-vente/conditions-generales-vente.component.html @@ -6,17 +6,21 @@

    CONDITIONS GÉNÉRALES DE VENTE

    Les présentes conditions générales ont pour objet de définir les droits et les obligations des parties dans le cadre de la vente en ligne, de produits papier ou en format pdf, sur le site - www.artisansdelatransition.org. + www.artisansdelatransition.org + .

    Article 1 : Généralités

    - Ce site internet est exploité par l'association Artisans de la transition, association - éditrice de LaRevueDurable. Son siège se trouve à la Rue de Lausanne 23, 1700 Fribourg - Suisse. + Ce site internet est exploité par l'association + Artisans de la transition + , association éditrice de + LaRevueDurable + . Son siège se trouve à la Rue de Lausanne 23, 1700 Fribourg Suisse.

    Toute personne physique effectuant un achat via le site internet - www.artisansdelatransition.org, est dénommée "le client". + www.artisansdelatransition.org + , est dénommée "le client".

    Le client reconnaît avoir pris connaissance au moment de passer sa commande, des conditions de vente et @@ -37,7 +41,8 @@

    Article 2 : Intégralité

    se réserve le droit de modifier ou d’adapter à n’importe quel moment et sans préavis les présentes conditions générales, avec application immédiate des nouvelles. Cependant, en cas de modification, il sera appliqué les conditions générales de vente en vigueur sur le site - www.artisansdelatransition.org, à la date d’enregistrement de la commande. + www.artisansdelatransition.org + , à la date d’enregistrement de la commande.

    Si une condition venait à faire défaut, elle serait considérée être régie par les usages en vigueur dans @@ -48,10 +53,11 @@

    Article 2 : Intégralité

    Article 3 : Propriété intellectuelle

    - Le site www.artisansdelatransition.org relève de la législation suisse et - internationale sur les droits d’auteur et la propriété intellectuelle. Tous les droits de reproduction - d’exploitation, de diffusion ou de modification du contenu y sont réservés, y compris les - représentations iconographiques et photographiques. + Le site + www.artisansdelatransition.org + relève de la législation suisse et internationale sur les droits d’auteur et la propriété + intellectuelle. Tous les droits de reproduction d’exploitation, de diffusion ou de modification du + contenu y sont réservés, y compris les représentations iconographiques et photographiques.

    La présentation générale du site est originale et également protégée. Nul n’est autorisé à reproduire le @@ -68,19 +74,25 @@

    Article 3 : Propriété intellectuelle

    A moins qu’une autre source ne soit citée, les graphiques sont la propriété de - LaRevueDurable. Les illustrations et les photos sont la propriété de leurs auteurs et - leur reproduction doit être négociée directement avec eux. + LaRevueDurable + . Les illustrations et les photos sont la propriété de leurs auteurs et leur reproduction doit être + négociée directement avec eux.

    Article 4 : Prix

    - Les prix des produits proposés à la vente sur www.artisansdelatransition.org sont - indiqués en Francs Suisses (CHF) et en euros. + Les prix des produits proposés à la vente sur + www.artisansdelatransition.org + sont indiqués en Francs Suisses (CHF) et en euros.

    Les personnes résidantes en Suisse sont tenues de passer leur commande en CHF. Les personnes résidant en dehors de la Suisse sont tenues de passer leur commande en euros.

    -

    L’association Artisans de la transition n’est pas soumise à la TVA.

    +

    + L’association + Artisans de la transition + n’est pas soumise à la TVA. +

    Les frais de livraison sont compris dans le prix sauf pour les livraisons dans des pays en dehors de l’Union européenne. Dans ce cas, les frais de livraison sont indiqués de manière distincte à côté de @@ -119,8 +131,9 @@

    Article 6 : Paiement

    sont cryptés via le service Datatrans.

    - En aucun cas l'association Artisans de la transition n'a connaissance du numéro de - carte du client et ne les stocke aucunement. + En aucun cas l'association + Artisans de la transition + n'a connaissance du numéro de carte du client et ne les stocke aucunement.

    Lors de la finalisation du processus de commande, le client est invité à saisir son numéro de carte @@ -130,14 +143,16 @@

    Article 6 : Paiement

    Les cartes acceptées sont les suivantes : Visa, MasterCard, Postcard et Paypal.

    - Le client garantit à www.artisansdelatransition.org qu'il dispose des - autorisations nécessaires pour utiliser le mode de paiement choisi par lui-même, lors de la validation - du bon de commande. + Le client garantit à + www.artisansdelatransition.org + qu'il dispose des autorisations nécessaires pour utiliser le mode de paiement choisi par lui-même, lors + de la validation du bon de commande.

    - www.artisansdelatransition.org se réserve le droit de suspendre ou annuler tout - traitement de commande en cas de refus d'autorisation de paiement par carte bancaire de la part des - organismes officiellement accrédités ou en cas de non-paiement de la commande. + www.artisansdelatransition.org + se réserve le droit de suspendre ou annuler tout traitement de commande en cas de refus d'autorisation + de paiement par carte bancaire de la part des organismes officiellement accrédités ou en cas de + non-paiement de la commande.

    Les clients qui possèdent des cartes prépayées peuvent les utiliser à tout moment pour régler un achat @@ -148,10 +163,11 @@

    Article 6 : Paiement

    Article 7 : Sécurité des paiements

    Datatrans, - www.datatrans.ch, est spécialisé dans les - transactions de paiement dans le commerce en ligne et exploite un système efficace permettant de - réaliser rapidement des paiements avec toutes les cartes de crédit, avec la Postcard ainsi qu’avec - différentes cartes de client, tout en bénéficiant de la plus haute sécurité de transaction. + www.datatrans.ch + , est spécialisé dans les transactions de paiement dans le commerce en ligne et exploite un système + efficace permettant de réaliser rapidement des paiements avec toutes les cartes de crédit, avec la + Postcard ainsi qu’avec différentes cartes de client, tout en bénéficiant de la plus haute sécurité de + transaction.

    Les systèmes de Datatrans sont exploités en Suisse et répondent à tous les standards de sécurité @@ -165,10 +181,12 @@

    Article 7 : Sécurité des paiements

    Article 8 : Réclamations

    Pour toute information ou réclamation concernant les produits proposés à la vente sur - www.artisansdelatransition.org, ou sur les présentes conditions générales de - vente, le client s’adresser à - abos@larevuedurable.com ou par courrier à cette adresse - : Association Artisans de la transition, Rue de Lausanne 23, 1700 Fribourg, Suisse. + www.artisansdelatransition.org + , ou sur les présentes conditions générales de vente, le client s’adresser à + abos@larevuedurable.com + ou par courrier à cette adresse : Association + Artisans de la transition + , Rue de Lausanne 23, 1700 Fribourg, Suisse.

    Article 9 : Cas de force majeure

    @@ -197,25 +215,29 @@

    Article 9 : Cas de force majeure

    Article 10 : Responsabilité

    - La responsabilité de l'association Artisans de la transition ne saurait être engagée - pour tous les inconvénients ou dommages inhérents à l’utilisation du réseau internet, notamment une - rupture du service, une intrusion extérieure ou la présence de virus informatiques, ou de fait qualifié - de force majeure, conformément à la jurisprudence. + La responsabilité de l'association + Artisans de la transition + ne saurait être engagée pour tous les inconvénients ou dommages inhérents à l’utilisation du réseau + internet, notamment une rupture du service, une intrusion extérieure ou la présence de virus + informatiques, ou de fait qualifié de force majeure, conformément à la jurisprudence.

    Article 11 : Conservation et archivage des transactions

    - L'association Artisans de la transition procède à l’archivage des bons de commandes et - des factures sur un support fiable et durable correspondant à une copie fidèle et pouvant être produit à - titre de preuve. Les registres informatisés conservés dans les systèmes informatiques de l'association - Artisans de la transition dans des conditions raisonnables de sécurité, seront - considérés par la société et le client comme les preuves des communications, des commandes et des - paiements intervenus entre les parties. + L'association + Artisans de la transition + procède à l’archivage des bons de commandes et des factures sur un support fiable et durable + correspondant à une copie fidèle et pouvant être produit à titre de preuve. Les registres informatisés + conservés dans les systèmes informatiques de l'association + Artisans de la transition + dans des conditions raisonnables de sécurité, seront considérés par la société et le client comme les + preuves des communications, des commandes et des paiements intervenus entre les parties.

    Article 12 : Données personnelles

    Les données personnelles du client (nom, prénom, adresse, email, etc…) sont conservées par l'association - Artisans de la transition et ne sont en aucun cas revendues ou partagées à une tierce - partie, si ce n’est pour satisfaire à un ordre de justice ou sur accord du client concerné. + Artisans de la transition + et ne sont en aucun cas revendues ou partagées à une tierce partie, si ce n’est pour satisfaire à un + ordre de justice ou sur accord du client concerné.

    Le client a la possibilité de demander la modification ou la radiation de ses données.

    Article 13 : Droit applicable

    @@ -226,7 +248,9 @@

    Article 13 : Droit applicable

    Tous litiges qui ne pourraient être réglés à l’amiable seront portés devant les tribunaux compétents du - ressort du siège social de l'association Artisans de la transition. + ressort du siège social de l'association + Artisans de la transition + .

    diff --git a/client/app/front-office/components/donation/donation.component.html b/client/app/front-office/components/donation/donation.component.html index ee6b8a727..ad59f8ee8 100644 --- a/client/app/front-office/components/donation/donation.component.html +++ b/client/app/front-office/components/donation/donation.component.html @@ -18,7 +18,5 @@

    Faire un don

    - + diff --git a/client/app/front-office/components/event-page/event-page.component.html b/client/app/front-office/components/event-page/event-page.component.html index 861fe42e3..9080f0f4a 100644 --- a/client/app/front-office/components/event-page/event-page.component.html +++ b/client/app/front-office/components/event-page/event-page.component.html @@ -7,7 +7,7 @@

    {{ data.model.name }} @if (isUpdatePage() && data.model.permissions.update) { - + } diff --git a/client/app/front-office/components/event-page/event-page.component.ts b/client/app/front-office/components/event-page/event-page.component.ts index 5d073f95e..aca501f22 100644 --- a/client/app/front-office/components/event-page/event-page.component.ts +++ b/client/app/front-office/components/event-page/event-page.component.ts @@ -4,19 +4,19 @@ import {NaturalAbstractDetail, NaturalCapitalizePipe, NaturalIconDirective} from import {EventService} from '../../../admin/events/services/event.service'; import {CommentListComponent} from '../comment-list/comment-list.component'; import {MatIcon} from '@angular/material/icon'; -import {MatIconButton} from '@angular/material/button'; +import {MatMiniFabButton} from '@angular/material/button'; import {DatePipe} from '@angular/common'; @Component({ selector: 'app-event-page', imports: [ DatePipe, - MatIconButton, RouterLink, MatIcon, NaturalIconDirective, CommentListComponent, NaturalCapitalizePipe, + MatMiniFabButton, ], templateUrl: './event-page.component.html', styleUrl: './event-page.component.scss', diff --git a/client/app/front-office/components/faire-un-don/faire-un-don.component.html b/client/app/front-office/components/faire-un-don/faire-un-don.component.html index d25f9738a..d97963999 100644 --- a/client/app/front-office/components/faire-un-don/faire-un-don.component.html +++ b/client/app/front-office/components/faire-un-don/faire-un-don.component.html @@ -16,15 +16,22 @@

    FAIRE UN DON


    - Faire un don + Faire un don
    diff --git a/client/app/front-office/components/home-block/home-block.component.html b/client/app/front-office/components/home-block/home-block.component.html index af5c88237..23cd07ce6 100644 --- a/client/app/front-office/components/home-block/home-block.component.html +++ b/client/app/front-office/components/home-block/home-block.component.html @@ -52,8 +52,8 @@
    - - + diff --git a/client/app/front-office/components/homepage/homepage.component.html b/client/app/front-office/components/homepage/homepage.component.html index 1a9398fd3..0247c07ce 100644 --- a/client/app/front-office/components/homepage/homepage.component.html +++ b/client/app/front-office/components/homepage/homepage.component.html @@ -50,7 +50,7 @@
    @@ -76,12 +76,10 @@ @for (event of events; track event) {
    - {{ event.name }} - + {{ event.name }}
    {{ event.date | date: 'EEE dd.MM.yy' | capitalize }} - - {{ event.place }} - {{ event.type }} + - {{ event.place }} - {{ event.type }}
    } @@ -124,9 +122,9 @@ | {{ currentReview.releaseDate | date: 'MMMM yyyy' | capitalize }}
    - {{ currentReview.name }} - + {{ + currentReview.name + }} @if (!currentReview.file) {
    @@ -144,9 +142,8 @@ color="tertiary" target="_blank" [href]="`/api/file/${currentReview.file.id}`" + >Télécharger le numéro - Télécharger le numéro -
    }
    @@ -158,9 +155,7 @@
    @@ -178,11 +173,13 @@
    S'abonner

    - En presque vingt ans, LaRevueDurable a publié plus de 1100 articles de fond - sur tous les thèmes qui touchent à la durabilité dans une soixantaine de pays. + En presque vingt ans, + LaRevueDurable + a publié plus de 1100 articles de fond sur tous les thèmes qui touchent à la durabilité dans + une soixantaine de pays.

    - Voir les abonnements + Voir les abonnements
    @@ -195,8 +192,10 @@
    Rejoindre l’association

    - Devenir membre des Artisans de la transition permet un lien direct et - privilégié avec notre action. Et nous donne plus de légitimité et de poids. + Devenir membre des + Artisans de la transition + permet un lien direct et privilégié avec notre action. Et nous donne plus de légitimité et + de poids.

    Découvrir l'association diff --git a/client/app/front-office/components/legal-mentions/legal-mentions.component.html b/client/app/front-office/components/legal-mentions/legal-mentions.component.html index 2fd0cc28d..a4296ae0d 100644 --- a/client/app/front-office/components/legal-mentions/legal-mentions.component.html +++ b/client/app/front-office/components/legal-mentions/legal-mentions.component.html @@ -3,19 +3,35 @@

    MENTIONS LÉGALES

    -

    Association Artisans de la transition, Rue de Lausanne 23, 1700 Fribourg, Suisse

    -

    Tél.:+41 26 321 37 11

    -

    Co-directeurs : Susana Jourdan et Jacques Mirenowicz

    - Conception graphique : + Association + Artisans de la transition + , Rue de Lausanne 23, 1700 Fribourg, Suisse +

    +

    + Tél.: + +41 26 321 37 11 +

    +

    + Co-directeurs : + Susana Jourdan et Jacques Mirenowicz +

    +

    + Conception graphique : Jean-Christophe Froidevaux, Vent d’ouest

    - Développement web : + Développement web : ecodev

    -

    Hébergeur du site : ecodev

    -

    Dessins : Jehan Khodl

    +

    + Hébergeur du site : + ecodev +

    +

    + Dessins : + Jehan Khodl +

    Crédits photos :

      @@ -32,36 +48,41 @@

      Crédits photos :

      Les auteurs des autres photos sont les - Artisans de la transition ou sont explicitement mentionnés dans les articles de - LaRevueDurable correspondants. + Artisans de la transition + ou sont explicitement mentionnés dans les articles de LaRevueDurable correspondants.

      Liens avec d’autres sites

      L’association - Artisans de la transition ont contrôlé les hyperliens qui partent de ce site vers des - sites tiers à la date de l’établissement des liens. Des contenus contraires au droit n’étaient pas - identifiables à la date de l’établissement de ces liens. L’association - Artisans de la transition ne saurait raisonnablement, sans indice concret d’une - violation du droit, effectuer la surveillance continue des contenus des sites Internet avec lesquels ce - site est lié par des liens. L’association Artisans de la transition supprimera de tels - liens immédiatement en cas de découverte d’une quelconque violation du droit. + Artisans de la transition + ont contrôlé les hyperliens qui partent de ce site vers des sites tiers à la date de l’établissement des + liens. Des contenus contraires au droit n’étaient pas identifiables à la date de l’établissement de ces + liens. L’association + Artisans de la transition + ne saurait raisonnablement, sans indice concret d’une violation du droit, effectuer la surveillance + continue des contenus des sites Internet avec lesquels ce site est lié par des liens. L’association + Artisans de la transition + supprimera de tels liens immédiatement en cas de découverte d’une quelconque violation du droit.

      Politique de confidentialité

      Les données personnelles du client (nom, prénom, adresse, adresse électronique, etc.) sont collectées pour pouvoir établir les factures et les envois nécessaires. L’association - Artisans de la transition les conserve, mais en aucun cas les revend ou les partage à - une tierce partie, si ce n’est pour satisfaire à un ordre de justice. Le client peut demander la - modification ou la radiation de ses données en adressant un message à - courriel@artisansdelatransition.org. + Artisans de la transition + les conserve, mais en aucun cas les revend ou les partage à une tierce partie, si ce n’est pour + satisfaire à un ordre de justice. Le client peut demander la modification ou la radiation de ses données + en adressant un message à + courriel@artisansdelatransition.org + .

      - Le site www.artisansdelatransition.org utilise des cookies de connexion. Ces - cookies servent à reconnaître votre navigateur et à enregistrer les préférences que vous avez - déterminées lors de votre précédente visite sur le site. Nous utilisons aussi des cookies pour mesurer - l’audience du site. Ces données sont totalement anonymisées et servent uniquement à comprendre - l’utilisation globale du site par les visiteurs. + Le site + www.artisansdelatransition.org + utilise des cookies de connexion. Ces cookies servent à reconnaître votre navigateur et à enregistrer + les préférences que vous avez déterminées lors de votre précédente visite sur le site. Nous utilisons + aussi des cookies pour mesurer l’audience du site. Ces données sont totalement anonymisées et servent + uniquement à comprendre l’utilisation globale du site par les visiteurs.

      Ce site bannit tous les autres cookies, qui servent à personnaliser les contenus publicitaires, à diff --git a/client/app/front-office/components/login/login.component.html b/client/app/front-office/components/login/login.component.html index c9c965410..96ab3e715 100644 --- a/client/app/front-office/components/login/login.component.html +++ b/client/app/front-office/components/login/login.component.html @@ -29,28 +29,22 @@ [type]="hidePassword ? 'password' : 'text'" (keydown.enter)="maybeConfirm()" /> - {{ form.controls.password.errors | errorMessage }}

      Pas encore de compte ?
      - Créer un compte + Créer un compte
    diff --git a/client/app/front-office/components/menu/menu.component.html b/client/app/front-office/components/menu/menu.component.html index b531c39e4..011fca68c 100644 --- a/client/app/front-office/components/menu/menu.component.html +++ b/client/app/front-office/components/menu/menu.component.html @@ -10,8 +10,8 @@ @for (item of navigation; track item) {
  • - {{ item.display }} + {{ item.display }} +
  • } diff --git a/client/app/front-office/components/news-page/news-page.component.html b/client/app/front-office/components/news-page/news-page.component.html index be210fbf0..4038c76b9 100644 --- a/client/app/front-office/components/news-page/news-page.component.html +++ b/client/app/front-office/components/news-page/news-page.component.html @@ -5,7 +5,7 @@

    {{ data.model.name }} @if (isUpdatePage() && data.model.permissions.update) { - + } diff --git a/client/app/front-office/components/news-page/news-page.component.ts b/client/app/front-office/components/news-page/news-page.component.ts index bb22b47b5..5dae3b145 100644 --- a/client/app/front-office/components/news-page/news-page.component.ts +++ b/client/app/front-office/components/news-page/news-page.component.ts @@ -5,19 +5,19 @@ import {NewsService} from '../../../admin/newses/services/news.service'; import {PermissionsService} from '../../../shared/services/permissions.service'; import {CommentListComponent} from '../comment-list/comment-list.component'; import {MatIcon} from '@angular/material/icon'; -import {MatIconButton} from '@angular/material/button'; +import {MatMiniFabButton} from '@angular/material/button'; import {DatePipe} from '@angular/common'; @Component({ selector: 'app-news-page', imports: [ DatePipe, - MatIconButton, RouterLink, MatIcon, NaturalIconDirective, CommentListComponent, NaturalCapitalizePipe, + MatMiniFabButton, ], templateUrl: './news-page.component.html', styleUrl: './news-page.component.scss', diff --git a/client/app/front-office/components/points-de-vente/points-de-vente.component.html b/client/app/front-office/components/points-de-vente/points-de-vente.component.html index b6ed0a84c..6b09c44ab 100644 --- a/client/app/front-office/components/points-de-vente/points-de-vente.component.html +++ b/client/app/front-office/components/points-de-vente/points-de-vente.component.html @@ -8,9 +8,10 @@

    POINTS DE VENTE

    Vous habitez une commune où - LaRevueDurable n’est pas diffusée et où vous connaissez un lieu de passage qui attire des - personnes engagées – librairie, épicerie bio, etc. – susceptible de la diffuser ? N’hésitez pas à nous en - parler : courriel@artisansdelatransition.org + LaRevueDurable + n’est pas diffusée et où vous connaissez un lieu de passage qui attire des personnes engagées – librairie, + épicerie bio, etc. – susceptible de la diffuser ? N’hésitez pas à nous en parler : + courriel@artisansdelatransition.org

    Suisse

    diff --git a/client/app/front-office/components/projet/projet.component.html b/client/app/front-office/components/projet/projet.component.html index 44da200a4..7e29bfc6e 100644 --- a/client/app/front-office/components/projet/projet.component.html +++ b/client/app/front-office/components/projet/projet.component.html @@ -10,15 +10,20 @@

    NOTRE PROJET

    - Les journalistes jugent souvent LaRevueDurable très engagée. Ses lecteurs saluent - sa rigueur. Ce sont les deux traits les plus caractéristiques de ce projet éditorial. + Les journalistes jugent souvent + LaRevueDurable + très engagée. Ses lecteurs saluent sa rigueur. Ce sont les deux traits les plus caractéristiques de + ce projet éditorial.

    - A qui s’adresse LaRevueDurable ? Poserait-on la question à un peintre ou à un - écrivain ? LaRevueDurable n’est pas un « produit » de presse, c’est une - création, une quête permanente. Derrière son contenu et sa forme, pas d’étude de marché ni d’analyse - d’agence. Pour savoir si cette revue peut vous instruire et vous aider à avancer, y a-t-il une autre - option que de lire et de découvrir ses numéros ? + A qui s’adresse + LaRevueDurable +  ? Poserait-on la question à un peintre ou à un écrivain ? + LaRevueDurable + n’est pas un « produit » de presse, c’est une création, une quête permanente. Derrière son + contenu et sa forme, pas d’étude de marché ni d’analyse d’agence. Pour savoir si cette revue peut + vous instruire et vous aider à avancer, y a-t-il une autre option que de lire et de découvrir ses + numéros ?

    Aux sources de LaRevueDurable

    @@ -26,8 +31,9 @@

    Aux sources de LaRevueDurable

    diff --git a/client/app/front-office/components/session-method/session-method.component.html b/client/app/front-office/components/session-method/session-method.component.html index dac9e0a63..c190893f8 100644 --- a/client/app/front-office/components/session-method/session-method.component.html +++ b/client/app/front-office/components/session-method/session-method.component.html @@ -32,9 +32,11 @@

    LA METHODE DES CONVERSATIONS CARBONE

    le changement climatique ».

    - Les Artisans de la transition mettent en pratique les Conversations carbone depuis - 2017. A ce jour, près de 700 personnes ont participé à une Conversation carbone en Suisse romande et 80 - % d’entre elles disent que cette expérience les a aidées à modifier leurs comportements. + Les + Artisans de la transition + mettent en pratique les Conversations carbone depuis 2017. A ce jour, près de 700 personnes ont + participé à une Conversation carbone en Suisse romande et 80 % d’entre elles disent que cette expérience + les a aidées à modifier leurs comportements.

    @for (line of cart.productLines; track line) {
    - {{ line.product.name }} + {{ + line.product.name + }}
    Version : {{ line.type | enum: 'ProductType' | async }}
    Quantité : {{ line.quantity }}
    diff --git a/client/app/front-office/modules/cart/components/create-order/create-order.component.scss b/client/app/front-office/modules/cart/components/create-order/create-order.component.scss index e69de29bb..1b4b0bd44 100644 --- a/client/app/front-office/modules/cart/components/create-order/create-order.component.scss +++ b/client/app/front-office/modules/cart/components/create-order/create-order.component.scss @@ -0,0 +1,3 @@ +.cart-item a { + color: var(--mat-sys-on-primary-container); +} diff --git a/client/app/front-office/modules/shop/components/emails/emails.component.html b/client/app/front-office/modules/shop/components/emails/emails.component.html index eaac0954d..be1e89572 100644 --- a/client/app/front-office/modules/shop/components/emails/emails.component.html +++ b/client/app/front-office/modules/shop/components/emails/emails.component.html @@ -13,7 +13,7 @@

    {{ dialogData.title }}

    - + - + diff --git a/client/app/front-office/modules/shop/components/product-page/product-page.component.html b/client/app/front-office/modules/shop/components/product-page/product-page.component.html index cdddb46a4..546c7854a 100644 --- a/client/app/front-office/modules/shop/components/product-page/product-page.component.html +++ b/client/app/front-office/modules/shop/components/product-page/product-page.component.html @@ -17,7 +17,7 @@
    } @if (data.model.permissions.update) { - + } @@ -57,8 +57,8 @@

    {{ data.model.name }}

    (click)="articlesMenuOpen = !articlesMenuOpen" > Voir les articles de ce numéro - + >Voir les articles de ce numéro
    @if (articlesMenuOpen) { @@ -95,9 +95,7 @@

    {{ data.model.name }}

    Intéressé par ce contenu ?
    Si vous êtes déjà abonné à la version numérique
    - connectez-vous ! - + connectez-vous !
    }
    @@ -161,7 +159,7 @@

    Téléchargement

    }
    @if (data.model.reviewNumber) { - ou acheter par articles + ou acheter par articles }
    } diff --git a/client/app/front-office/modules/shop/components/product-page/product-page.component.ts b/client/app/front-office/modules/shop/components/product-page/product-page.component.ts index bd9e28b8b..f9a57601a 100644 --- a/client/app/front-office/modules/shop/components/product-page/product-page.component.ts +++ b/client/app/front-office/modules/shop/components/product-page/product-page.component.ts @@ -22,7 +22,7 @@ import {MatListItem, MatNavList} from '@angular/material/list'; import {MatRipple} from '@angular/material/core'; import {MatIcon} from '@angular/material/icon'; import {RouterLink} from '@angular/router'; -import {MatButton, MatIconButton} from '@angular/material/button'; +import {MatButton, MatMiniFabButton} from '@angular/material/button'; import {DatePipe} from '@angular/common'; @Component({ @@ -30,7 +30,6 @@ import {DatePipe} from '@angular/common'; imports: [ DatePipe, MatButton, - MatIconButton, RouterLink, MatIcon, NaturalIconDirective, @@ -42,6 +41,7 @@ import {DatePipe} from '@angular/common'; AddToCartComponent, ProductsPageComponent, NaturalCapitalizePipe, + MatMiniFabButton, ], templateUrl: './product-page.component.html', styleUrl: './product-page.component.scss', diff --git a/client/app/front-office/modules/shop/components/products-page/products-page.component.html b/client/app/front-office/modules/shop/components/products-page/products-page.component.html index 31d398737..0b30e44f7 100644 --- a/client/app/front-office/modules/shop/components/products-page/products-page.component.html +++ b/client/app/front-office/modules/shop/components/products-page/products-page.component.html @@ -17,9 +17,9 @@ @if (showTagsOnProducts) {
    @for (tag of product.productTags; track tag) { - {{ tag.name }} - + {{ + tag.name + }} }
    } @@ -55,9 +55,8 @@ class="product-file-button" target="_blank" [href]="`/api/file/${product.file.id}`" + >Télécharger - Télécharger - }
    @@ -83,7 +82,7 @@
    @if (product.reviewNumber) { - N° {{ product.reviewNumber }} + N° {{ product.reviewNumber }} } @if (product.releaseDate) { @@ -91,9 +90,9 @@ }
    - {{ product.name }} - + {{ + product.name + }}
    Voir le détail - + >Voir le détail @if (product.file) { Télécharger - Télécharger - }
    @@ -127,7 +124,7 @@ }
    @if (items && dataSource?.data?.length > items.length) { - + {{ route.snapshot.data.showMoreLabel }} } diff --git a/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.html b/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.html index 075590b35..5f037fbb9 100644 --- a/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.html +++ b/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.html @@ -5,8 +5,9 @@

    S'ABONNER

    Plus de 1000 articles de fond sur tous les thèmes qui touchent à la durabilité dans une soixantaine de pays. - LaRevueDurable constitue l’une des plus importantes bases de données disponibles sur la - durabilité et la transition écologique en français. Voici nos formules d’abonnement. + LaRevueDurable + constitue l’une des plus importantes bases de données disponibles sur la durabilité et la transition + écologique en français. Voici nos formules d’abonnement.

    Si vous souhaitez offrir un abonnement, merci de contacter directement diff --git a/client/app/profile/components/account/account.component.html b/client/app/profile/components/account/account.component.html index df8620534..6af8c9ff7 100644 --- a/client/app/profile/components/account/account.component.html +++ b/client/app/profile/components/account/account.component.html @@ -12,7 +12,7 @@

    Compte

    -
    @@ -39,7 +39,7 @@

    Adresse

    - diff --git a/client/app/profile/components/profile/profile.component.html b/client/app/profile/components/profile/profile.component.html index faea5fb74..1c9be46b1 100644 --- a/client/app/profile/components/profile/profile.component.html +++ b/client/app/profile/components/profile/profile.component.html @@ -56,18 +56,18 @@ routerLink="/mon-compte/articles-achetes" routerLinkActive="active" fragment="profile-content" - >Articles et revues achetées - + >Articles et revues achetées Données personnelles - + >Données personnelles Commandes - + >Commandes
    diff --git a/client/app/profile/components/purchases/purchases.component.html b/client/app/profile/components/purchases/purchases.component.html index 02ef34014..f1a4e8d2b 100644 --- a/client/app/profile/components/purchases/purchases.component.html +++ b/client/app/profile/components/purchases/purchases.component.html @@ -24,7 +24,7 @@

    Articles achetés

    @if (orderLine.product.reviewNumber) { - N° {{ orderLine.product.reviewNumber }} + N° {{ orderLine.product.reviewNumber }} } @if (orderLine.product.releaseDate) { @@ -41,7 +41,7 @@

    Articles achetés

    {{ orderLine.product.name }} @if (canDownload(orderLine)) { - + Télécharger diff --git a/client/app/shared/components/breadcrumbs/breadcrumbs.component.html b/client/app/shared/components/breadcrumbs/breadcrumbs.component.html index 3cede268c..0f8567a2a 100644 --- a/client/app/shared/components/breadcrumbs/breadcrumbs.component.html +++ b/client/app/shared/components/breadcrumbs/breadcrumbs.component.html @@ -2,6 +2,6 @@
    } @for (breadcrumb of breadcrumbs; track $index) { - {{ breadcrumb.label }} + {{ breadcrumb.label }}
    } diff --git a/client/app/shared/components/error/error.component.html b/client/app/shared/components/error/error.component.html index f31d7670f..7da735c44 100644 --- a/client/app/shared/components/error/error.component.html +++ b/client/app/shared/components/error/error.component.html @@ -14,7 +14,7 @@

    diff --git a/client/app/user/components/change-password/change-password.component.html b/client/app/user/components/change-password/change-password.component.html index 4f0efed2e..40a110fca 100644 --- a/client/app/user/components/change-password/change-password.component.html +++ b/client/app/user/components/change-password/change-password.component.html @@ -5,12 +5,7 @@

    Changement de mot de passe

    - diff --git a/client/app/user/components/register/register.component.html b/client/app/user/components/register/register.component.html index 03d1bfda9..510f903f7 100644 --- a/client/app/user/components/register/register.component.html +++ b/client/app/user/components/register/register.component.html @@ -23,7 +23,7 @@

    Coordonnées

    }
    -
    diff --git a/client/app/user/components/request-password-reset/request-password-reset.component.html b/client/app/user/components/request-password-reset/request-password-reset.component.html index 0b07b8771..5d28bef3b 100644 --- a/client/app/user/components/request-password-reset/request-password-reset.component.html +++ b/client/app/user/components/request-password-reset/request-password-reset.component.html @@ -11,7 +11,7 @@

    Demande de changement de mot de passe

    - diff --git a/package.json b/package.json index 688689b4e..074e10af5 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^20.0.0", - "@ecodev/natural": "^66.0.3", - "@ecodev/natural-editor": "^66.0.3", + "@ecodev/natural": "^66.0.4", + "@ecodev/natural-editor": "^66.0.4", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index a9f006953..9faa4e9e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -908,10 +908,10 @@ dependencies: tslib "^2.8.1" -"@ecodev/natural-editor@^66.0.3": - version "66.0.3" - resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.3.tgz#12f05428dadef1428a85683cbce6a3d13a60e7bf" - integrity sha512-Aml3hdrr5htMer3NLQ/rvRmNXrE/H7cf/UxVRoLfUu5R3E8KOwUczOFedwZQKzd29mS4NcsasJpJEfSIm1PA5g== +"@ecodev/natural-editor@^66.0.4": + version "66.0.4" + resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.4.tgz#53cd3dca4c8c9f147da07dcd720d7eb3e1ffbbfd" + integrity sha512-seC43GIyBlNMd9B3cZpolSV5JR73Fg4m9C+daEI7eNS9Kby2jQDeObPBpNeOP1+L3RGxvmVGJtYPgIz2G1qX5A== dependencies: prosemirror-commands "^1.5.2" prosemirror-dropcursor "^1.8.1" @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^66.0.3": - version "66.0.3" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.3.tgz#42e0157713b8c909162d732ec1b04aae371cec63" - integrity sha512-CWc/JkytTkIa1LAwGyOMLw180Daiee7HnDH1JKoBLvqN3BMoachQLyYQOwAw3fX3Nooebs5cyXNmPneMkoIdDw== +"@ecodev/natural@^66.0.4": + version "66.0.4" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.4.tgz#8d570572960e19fbf909ab021d7430fa664388ca" + integrity sha512-ef05zTQhG1Va55qt103l07iAeESOVEpVurj8RS2vGOAAZQKFDfLSmAfYU/kK1pzRdHr+4vnJRWOurhxuCh8IiQ== dependencies: extract-files "^13.0.0" tslib "^2.8.1" From 2e17996df834b0b4343426e67e6e48e71784e40d Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Tue, 2 Dec 2025 00:43:32 +0100 Subject: [PATCH 08/25] MD3 finetunings #11936 --- .../agir-avec-nous/bns/bns.component.html | 2 +- .../components/projet/projet.component.html | 146 ++++++++---------- .../add-to-cart/add-to-cart.component.html | 7 +- .../add-to-cart/add-to-cart.component.ts | 5 - .../product-page/product-page.component.html | 2 - .../products-page.component.html | 2 +- .../components/profile/profile.component.html | 1 - .../register/register.component.html | 7 +- 8 files changed, 79 insertions(+), 93 deletions(-) diff --git a/client/app/front-office/components/agir-avec-nous/bns/bns.component.html b/client/app/front-office/components/agir-avec-nous/bns/bns.component.html index 6be234975..b684204ea 100644 --- a/client/app/front-office/components/agir-avec-nous/bns/bns.component.html +++ b/client/app/front-office/components/agir-avec-nous/bns/bns.component.html @@ -1,7 +1,7 @@

    RAPPORTS BNS

    -
    +

    Depuis 2016, l’association a publié trois rapports sur les investissements de la Banque Nationale Suisse dans l’industrie des énergies fossiles, dont les deux premiers ont donné lieu à de nombreuses motions diff --git a/client/app/front-office/components/projet/projet.component.html b/client/app/front-office/components/projet/projet.component.html index 7e29bfc6e..9277d67d4 100644 --- a/client/app/front-office/components/projet/projet.component.html +++ b/client/app/front-office/components/projet/projet.component.html @@ -4,87 +4,77 @@ >

    -
    -

    NOTRE PROJET

    +

    NOTRE PROJET

    -
    -
    -

    - Les journalistes jugent souvent - LaRevueDurable - très engagée. Ses lecteurs saluent sa rigueur. Ce sont les deux traits les plus caractéristiques de - ce projet éditorial. -

    -

    - A qui s’adresse - LaRevueDurable -  ? Poserait-on la question à un peintre ou à un écrivain ? - LaRevueDurable - n’est pas un « produit » de presse, c’est une création, une quête permanente. Derrière son - contenu et sa forme, pas d’étude de marché ni d’analyse d’agence. Pour savoir si cette revue peut - vous instruire et vous aider à avancer, y a-t-il une autre option que de lire et de découvrir ses - numéros ? -

    +
    +
    +

    + Les journalistes jugent souvent LaRevueDurable très engagée. Ses lecteurs saluent sa + rigueur. Ce sont les deux traits les plus caractéristiques de ce projet éditorial. +

    +

    + A qui s’adresse LaRevueDurable  ? Poserait-on la question à un peintre ou à un + écrivain ? LaRevueDurable n’est pas un « produit » de presse, c’est une + création, une quête permanente. Derrière son contenu et sa forme, pas d’étude de marché ni d’analyse + d’agence. Pour savoir si cette revue peut vous instruire et vous aider à avancer, y a-t-il une autre + option que de lire et de découvrir ses numéros ? +

    -

    Aux sources de LaRevueDurable

    +

    Aux sources de LaRevueDurable

    -
      -
    • -

      - Il était une fois, au départ de - LaRevueDurable - , deux idéalistes. Au début de l’aventure, en 2002, ils ressemblaient à cela. -

      - - - -
    • -
    -
    -
      -
    • -

      - Quelques années plus tard, ils ont un peu plus de verbe qu’à leurs débuts (entretien RTS en - juin 2008). -

      -
      - - -
      -
    • -
    -
    -
      -
    • -

      - En 2019, Jacques Mirenowicz évoque ces dix dernières années de mobilisation pour le climat. -

      - - - -
    • -
    -
    +
      +
    • +

      + Il était une fois, au départ de LaRevueDurable , deux idéalistes. Au début de + l’aventure, en 2002, ils ressemblaient à cela. +

      + + + +
    • +
    +
    +
      +
    • +

      + Quelques années plus tard, ils ont un peu plus de verbe qu’à leurs débuts (entretien RTS en juin + 2008). +

      +
      + + +
      +
    • +
    +
    +
      +
    • +

      En 2019, Jacques Mirenowicz évoque ces dix dernières années de mobilisation pour le climat.

      + + + +
    • +
    diff --git a/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.html b/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.html index 3ad61bb73..57a617906 100644 --- a/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.html +++ b/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.html @@ -1,6 +1,5 @@ @if (!inCart) { - {{ label() || "Acheter l'article" }} -} -@if (inCart) { - {{ 'Voir le panier' }} + {{ label() || "Acheter l'article" }} +} @else { + {{ 'Voir le panier' }} } diff --git a/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.ts b/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.ts index 96a06fa7a..5f2929a0f 100644 --- a/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.ts +++ b/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.ts @@ -19,11 +19,6 @@ export class AddToCartComponent { */ public readonly label = input.required(); - /** - * Button background color - */ - public readonly buttonColor = input<'primary' | 'accent' | 'warn' | null>('primary'); - /** * Product to add to cart */ diff --git a/client/app/front-office/modules/shop/components/product-page/product-page.component.html b/client/app/front-office/modules/shop/components/product-page/product-page.component.html index 546c7854a..82e3a4ba0 100644 --- a/client/app/front-office/modules/shop/components/product-page/product-page.component.html +++ b/client/app/front-office/modules/shop/components/product-page/product-page.component.html @@ -138,7 +138,6 @@

    Téléchargement

    @@ -151,7 +150,6 @@

    Téléchargement

    diff --git a/client/app/front-office/modules/shop/components/products-page/products-page.component.html b/client/app/front-office/modules/shop/components/products-page/products-page.component.html index 0b30e44f7..dfb308a11 100644 --- a/client/app/front-office/modules/shop/components/products-page/products-page.component.html +++ b/client/app/front-office/modules/shop/components/products-page/products-page.component.html @@ -42,7 +42,7 @@
    @if (!product.file) { -
    +
    Abonné ou diff --git a/client/app/profile/components/profile/profile.component.html b/client/app/profile/components/profile/profile.component.html index 1c9be46b1..5a6322972 100644 --- a/client/app/profile/components/profile/profile.component.html +++ b/client/app/profile/components/profile/profile.component.html @@ -34,7 +34,6 @@ label="Payer la cotisation" [product]="membershipProduct" [type]="ProductType.Other" - [buttonColor]="null" /> } @if (viewer.membership !== Membership.None) { diff --git a/client/app/user/components/register/register.component.html b/client/app/user/components/register/register.component.html index 510f903f7..92a3a6e1c 100644 --- a/client/app/user/components/register/register.component.html +++ b/client/app/user/components/register/register.component.html @@ -23,7 +23,12 @@

    Coordonnées

    }
    -
    From 132de4d0308c5eed69303e774cd86f4a91702349 Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Tue, 2 Dec 2025 01:50:10 +0100 Subject: [PATCH 09/25] MD3 support dynamic colored buttons and fine tunings #11936 --- .../app/admin/users/user/user.component.html | 4 +- client/app/app.component.scss | 20 --- .../actions/actions.component.html | 4 +- .../agir-au-quotidien.component.html | 4 +- .../alimentation/alimentation.component.html | 6 +- .../alimentation/alimentation1.component.html | 4 +- .../agir-avec-nous/bns/bns.component.scss | 6 - .../desinvestir-fossile.component.html | 4 +- .../irremplacables-epiceries.component.html | 2 +- .../numerique-ethique.component.html | 4 +- ...port-epiceries-alternatives.component.html | 4 +- .../comite-status.component.html | 12 +- .../convictions/convictions.component.html | 4 +- .../partenariats/partenariats.component.html | 4 +- .../qui-sommes-nous.component.html | 4 +- .../circuits-courts.component.html | 2 +- .../conditions-generales-vente.component.html | 4 +- .../components/contact/contact.component.html | 2 +- .../faire-un-don/faire-un-don.component.html | 4 +- .../homepage/homepage.component.html | 2 +- .../legal-mentions.component.html | 4 +- .../news-page/news-page.component.html | 2 +- .../points-de-vente.component.html | 127 +++++++++--------- .../components/projet/projet.component.html | 4 +- ...session-facilitator-private.component.html | 2 +- .../session-facilitator.component.html | 2 +- .../session-method.component.html | 6 +- .../session-organisation.component.html | 4 +- .../sessions-incoming.component.html | 4 +- .../nous-faire-connaitre.component.html | 4 +- .../offrir-la-revue.component.html | 4 +- .../rejoindre-association.component.html | 4 +- .../create-order/create-order.component.html | 2 +- .../product-page/product-page.component.html | 23 ++-- .../product-page/product-page.component.scss | 6 +- .../products-page.component.html | 4 +- client/styles.scss | 36 +++++ package.json | 4 +- yarn.lock | 16 +-- 39 files changed, 183 insertions(+), 175 deletions(-) diff --git a/client/app/admin/users/user/user.component.html b/client/app/admin/users/user/user.component.html index 7b32c20c0..33b5ce4b7 100644 --- a/client/app/admin/users/user/user.component.html +++ b/client/app/admin/users/user/user.component.html @@ -96,13 +96,13 @@

    Conversations carbone animées

    @if (data.model.firstLogin) {
    - Première connexion : + Première connexion : {{ data.model.firstLogin | date }} ({{ data.model.firstLogin | timeAgo }})
    } @if (data.model.lastLogin) {
    - Dernière connexion : + Dernière connexion : {{ data.model.lastLogin | date }} ({{ data.model.lastLogin | timeAgo }})
    } diff --git a/client/app/app.component.scss b/client/app/app.component.scss index 9e593df4d..2d559ede4 100644 --- a/client/app/app.component.scss +++ b/client/app/app.component.scss @@ -13,23 +13,3 @@ } } } - -.witnesses { - display: grid; - grid-template-columns: 50% 50%; - grid-gap: 20px; - - @media screen and (max-width: 700px) { - grid-template-columns: 100%; - } -} - -.witness { - display: inline-block; // prevents columns to break paragraph (from bottom to top of next column) - margin-bottom: 30px; - border-width: 0; - border-left-width: 5px; - border-style: solid; - border-color: var(--mat-sys-primary-container); - padding: 0 0 0 10px; -} diff --git a/client/app/front-office/components/agir-avec-nous/actions/actions.component.html b/client/app/front-office/components/agir-avec-nous/actions/actions.component.html index f71adf70f..0300b8a08 100644 --- a/client/app/front-office/components/agir-avec-nous/actions/actions.component.html +++ b/client/app/front-office/components/agir-avec-nous/actions/actions.component.html @@ -24,11 +24,11 @@

    Agir

    -
    +

    TOUTES NOS ACTIONS

    -
    +

    Pour faire avancer la transition écologique et sociale en Suisse romande, les Artisans de la transition diff --git a/client/app/front-office/components/agir-avec-nous/agir-au-quotidien/agir-au-quotidien.component.html b/client/app/front-office/components/agir-avec-nous/agir-au-quotidien/agir-au-quotidien.component.html index 784b21bfc..630299319 100644 --- a/client/app/front-office/components/agir-avec-nous/agir-au-quotidien/agir-au-quotidien.component.html +++ b/client/app/front-office/components/agir-avec-nous/agir-au-quotidien/agir-au-quotidien.component.html @@ -3,10 +3,10 @@ [style.backgroundImage]="'url(assets/images/illustration-pages/artisansdelatransition_photocase-leonrojo.jpg)'" >

    -
    +

    AGIR AU QUOTIDIEN

    -
    +
    • Le confinement nous a amenés à changer de style de vie très rapidement et à grande échelle. Des diff --git a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html index b3bb7bd5a..b8d925438 100644 --- a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html +++ b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation.component.html @@ -3,11 +3,11 @@ [style.backgroundImage]="'url(assets/images/illustration-pages/epicerie_a_cote-artisans.webp)'" >
    -
    +

    ALIMENTATION

    -
    +

    De nombreuses personnes – producteurs, transformatrices, distributeurs, restauratrices et mangeurs – s’efforcent de rendre l’agriculture et l’alimentation plus saine, meilleure pour les sols, le climat et @@ -93,7 +93,7 @@

    ALIMENTATION

    diff --git a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation1.component.html b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation1.component.html index ab8b539ac..68ba129ea 100644 --- a/client/app/front-office/components/agir-avec-nous/alimentation/alimentation1.component.html +++ b/client/app/front-office/components/agir-avec-nous/alimentation/alimentation1.component.html @@ -3,11 +3,11 @@ [style.backgroundImage]="'url(assets/images/illustration-pages/epicerie_a_cote-artisans.webp)'" >
    -
    +

    ALIMENTATION

    -
    +

    L’alimentation a toujours été au centre du travail de LaRevueDurable diff --git a/client/app/front-office/components/agir-avec-nous/bns/bns.component.scss b/client/app/front-office/components/agir-avec-nous/bns/bns.component.scss index d47b1338d..5904bd046 100644 --- a/client/app/front-office/components/agir-avec-nous/bns/bns.component.scss +++ b/client/app/front-office/components/agir-avec-nous/bns/bns.component.scss @@ -20,12 +20,6 @@ h2.mat-font-title-lg { height: 150px; } -.mat-mdc-unelevated-button { - display: block; - clear: both; - width: 300px; -} - .illustration { margin: 30px 0; max-width: 100%; diff --git a/client/app/front-office/components/agir-avec-nous/desinvestir-fossile/desinvestir-fossile.component.html b/client/app/front-office/components/agir-avec-nous/desinvestir-fossile/desinvestir-fossile.component.html index dc43df0fd..c6386139b 100644 --- a/client/app/front-office/components/agir-avec-nous/desinvestir-fossile/desinvestir-fossile.component.html +++ b/client/app/front-office/components/agir-avec-nous/desinvestir-fossile/desinvestir-fossile.component.html @@ -5,11 +5,11 @@ " >

    -
    +

    DÉSINVESTIR DE L’INDUSTRIE DES ÉNERGIES FOSSILES

    -
    +

    Etre sobre dans l’usage des combustibles et des carburants fossiles est fondamental pour baisser les émissions de CO diff --git a/client/app/front-office/components/agir-avec-nous/irremplacables-epiceries/irremplacables-epiceries.component.html b/client/app/front-office/components/agir-avec-nous/irremplacables-epiceries/irremplacables-epiceries.component.html index eb12a78b2..ba5043582 100644 --- a/client/app/front-office/components/agir-avec-nous/irremplacables-epiceries/irremplacables-epiceries.component.html +++ b/client/app/front-office/components/agir-avec-nous/irremplacables-epiceries/irremplacables-epiceries.component.html @@ -9,7 +9,7 @@

    IRREMPLAÇABLES ÉPICERIES

    -
    +

    Le documentaire Irremplaçables épiceries ! présente en 47 minutes la façon dont les épiceries alternatives de Suisse romande s’approvisionnent en donnant la priorité aux fermes en agroécologie et diff --git a/client/app/front-office/components/agir-avec-nous/numerique-ethique/numerique-ethique.component.html b/client/app/front-office/components/agir-avec-nous/numerique-ethique/numerique-ethique.component.html index 3d133792b..6e3ced3f6 100644 --- a/client/app/front-office/components/agir-avec-nous/numerique-ethique/numerique-ethique.component.html +++ b/client/app/front-office/components/agir-avec-nous/numerique-ethique/numerique-ethique.component.html @@ -3,11 +3,11 @@ [style.backgroundImage]="'url(assets/images/illustration-pages/larevuedurable-tatyana-aksenova-photocase.jpg)'" >

    -
    +

    NUMÉRIQUE ÉTHIQUE

    -
    +

    Chercher des informations sur internet, acheter en ligne ou avec sa carte de crédit, échanger sur les réseaux sociaux, participer à des visioconférences, regarder des vidéos, utiliser son GPS, gérer ses diff --git a/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html b/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html index ca7cc1e03..9ba99e47e 100644 --- a/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html +++ b/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.html @@ -1,8 +1,8 @@ -

    +

    PREMIER RAPPORT SUR LES ÉPICERIES ALTERNATIVES EN SUISSE ROMANDE

    -
    +

    Paru le 20 novembre 2024, le rapport des Artisans de la transition diff --git a/client/app/front-office/components/association/comite-status/comite-status.component.html b/client/app/front-office/components/association/comite-status/comite-status.component.html index 75e0ad9ac..b62173286 100644 --- a/client/app/front-office/components/association/comite-status/comite-status.component.html +++ b/client/app/front-office/components/association/comite-status/comite-status.component.html @@ -1,11 +1,11 @@ -

    +

    COMITÉ ET STATUTS

    -
    -
    Comité
    +
    +

    Comité

    -
    Président
    +

    Président

    Yvan Maillard Ardenti pilote le programme « Justice climatique » à la fondation Pain pour le prochain. Grand connaisseur de la finance éthique, il a été l’une des chevilles ouvrières du collectif @@ -14,7 +14,7 @@

    COMITÉ ET STATUTS

    , un projet d’investissement fribourgeois dans une centrale à charbon au nord de l’Allemagne.

    -
    Secrétaire
    +

    Secrétaire

    Depuis qu’il a pris sa retraite d’enseignant en géographie, Jacques Eschmann profite de la nature et laisse libre cours à son esprit contemplatif. Il reste toutefois aussi très impliqué dans plusieurs @@ -22,7 +22,7 @@

    COMITÉ ET STATUTS

    en aide aux plus démunis qui ont besoin d’assistance médicale, et les Grands-parents pour le climat.

    -
    Membres
    +

    Membres

    Stéphane Cuennet est géographe, journaliste et traducteur. Il propose des services rédactionnels sur tous les thèmes liés au territoire et à l’environnement. Il a longtemps assuré la présidence des Amis de diff --git a/client/app/front-office/components/association/convictions/convictions.component.html b/client/app/front-office/components/association/convictions/convictions.component.html index d02af42f2..780aaacc8 100644 --- a/client/app/front-office/components/association/convictions/convictions.component.html +++ b/client/app/front-office/components/association/convictions/convictions.component.html @@ -5,11 +5,11 @@ " >

    -
    +

    NOS CONVICTIONS

    -
    +

    « Lorsqu’on commence à agir, l’espoir est partout. Au lieu de chercher l’espoir, il faut donc plutôt chercher à agir. L’espoir suivra. » Greta Thunberg diff --git a/client/app/front-office/components/association/partenariats/partenariats.component.html b/client/app/front-office/components/association/partenariats/partenariats.component.html index 474375ccc..6bf52075d 100644 --- a/client/app/front-office/components/association/partenariats/partenariats.component.html +++ b/client/app/front-office/components/association/partenariats/partenariats.component.html @@ -1,8 +1,8 @@ -

    +

    PARTENARIATS ET COOPÉRATIONS

    -
    +
    Plate-forme développement durable-HES-SO

    diff --git a/client/app/front-office/components/association/qui-sommes-nous/qui-sommes-nous.component.html b/client/app/front-office/components/association/qui-sommes-nous/qui-sommes-nous.component.html index 110ffeead..df0c8100e 100644 --- a/client/app/front-office/components/association/qui-sommes-nous/qui-sommes-nous.component.html +++ b/client/app/front-office/components/association/qui-sommes-nous/qui-sommes-nous.component.html @@ -1,10 +1,10 @@

    -
    +

    QUI SOMMES-NOUS ?

    -
    +
    diff --git a/client/app/front-office/components/circuits-courts/circuits-courts.component.html b/client/app/front-office/components/circuits-courts/circuits-courts.component.html index 8823f5536..2278b3d09 100644 --- a/client/app/front-office/components/circuits-courts/circuits-courts.component.html +++ b/client/app/front-office/components/circuits-courts/circuits-courts.component.html @@ -7,7 +7,7 @@

    MANGER C'EST POLITIQUE

    -
    +

    En 37 minutes, le documentaire Manger, c’est politique ! raconte la construction inédite de quatre circuits courts alimentaires collectifs : il montre les immenses avantages des circuits courts et diff --git a/client/app/front-office/components/conditions-generales-vente/conditions-generales-vente.component.html b/client/app/front-office/components/conditions-generales-vente/conditions-generales-vente.component.html index 9f4dbefd8..f938c3023 100644 --- a/client/app/front-office/components/conditions-generales-vente/conditions-generales-vente.component.html +++ b/client/app/front-office/components/conditions-generales-vente/conditions-generales-vente.component.html @@ -1,8 +1,8 @@ -

    +

    CONDITIONS GÉNÉRALES DE VENTE

    -
    +

    Les présentes conditions générales ont pour objet de définir les droits et les obligations des parties dans le cadre de la vente en ligne, de produits papier ou en format pdf, sur le site diff --git a/client/app/front-office/components/contact/contact.component.html b/client/app/front-office/components/contact/contact.component.html index 7a3e39714..1a477850f 100644 --- a/client/app/front-office/components/contact/contact.component.html +++ b/client/app/front-office/components/contact/contact.component.html @@ -9,7 +9,7 @@

    NOUS CONTACTER

    -
    +

    Nous nous réjouissons de vous lire : diff --git a/client/app/front-office/components/faire-un-don/faire-un-don.component.html b/client/app/front-office/components/faire-un-don/faire-un-don.component.html index d97963999..a3b9276f3 100644 --- a/client/app/front-office/components/faire-un-don/faire-un-don.component.html +++ b/client/app/front-office/components/faire-un-don/faire-un-don.component.html @@ -4,11 +4,11 @@

    -
    +

    FAIRE UN DON

    -
    +

    Les dons composent la moitié des revenus de l’association. Ils garantissent son indépendance. En diff --git a/client/app/front-office/components/homepage/homepage.component.html b/client/app/front-office/components/homepage/homepage.component.html index 0247c07ce..4e5d4da56 100644 --- a/client/app/front-office/components/homepage/homepage.component.html +++ b/client/app/front-office/components/homepage/homepage.component.html @@ -38,7 +38,7 @@

    @for (news of newses; track news) {
    -
    +
    {{ news.date | date: 'EEE dd.MM.yy' | capitalize }}
    {{ diff --git a/client/app/front-office/components/legal-mentions/legal-mentions.component.html b/client/app/front-office/components/legal-mentions/legal-mentions.component.html index a4296ae0d..f68afe7c9 100644 --- a/client/app/front-office/components/legal-mentions/legal-mentions.component.html +++ b/client/app/front-office/components/legal-mentions/legal-mentions.component.html @@ -1,8 +1,8 @@ -
    +

    MENTIONS LÉGALES

    -
    +

    Association Artisans de la transition diff --git a/client/app/front-office/components/news-page/news-page.component.html b/client/app/front-office/components/news-page/news-page.component.html index 4038c76b9..b1a3c8d5e 100644 --- a/client/app/front-office/components/news-page/news-page.component.html +++ b/client/app/front-office/components/news-page/news-page.component.html @@ -12,7 +12,7 @@

    -
    +

    Commentaires

    diff --git a/client/app/front-office/components/points-de-vente/points-de-vente.component.html b/client/app/front-office/components/points-de-vente/points-de-vente.component.html index 6b09c44ab..e6fc89c27 100644 --- a/client/app/front-office/components/points-de-vente/points-de-vente.component.html +++ b/client/app/front-office/components/points-de-vente/points-de-vente.component.html @@ -7,10 +7,9 @@

    POINTS DE VENTE

    - Vous habitez une commune où - LaRevueDurable - n’est pas diffusée et où vous connaissez un lieu de passage qui attire des personnes engagées – librairie, - épicerie bio, etc. – susceptible de la diffuser ? N’hésitez pas à nous en parler : + Vous habitez une commune où LaRevueDurable n’est pas diffusée et où vous connaissez un lieu de + passage qui attire des personnes engagées – librairie, épicerie bio, etc. – susceptible de la diffuser ? + N’hésitez pas à nous en parler : courriel@artisansdelatransition.org

    @@ -22,31 +21,31 @@

    Fribourg

    Atout Vrac
    -
    Grand-Rue 10
    -
    Fribourg
    +
    Grand-Rue 10
    +
    Fribourg
    Le Petit Paradis
    -
    Place du Petit paradis 24
    -
    Fribourg
    +
    Place du Petit paradis 24
    +
    Fribourg
    Librairie Albert Le Grand
    -
    Rue du Temple 1
    -
    Fribourg
    +
    Rue du Temple 1
    +
    Fribourg
    Librairie Payot
    -
    Rue de Romont 21
    -
    Fribourg
    +
    Rue de Romont 21
    +
    Fribourg
    Vrac boulevard
    -
    Rte de la Glâne 122
    -
    Villars-sur-Glâne
    +
    Rte de la Glâne 122
    +
    Villars-sur-Glâne
    @@ -55,32 +54,32 @@

    Genève

    Cactus Sport
    -
    Rue du Pont Neuf 6
    -
    Carouge
    +
    Rue du Pont Neuf 6
    +
    Carouge
    Itopie Informatique
    -
    Rue Lissignol 10
    -
    Genève
    +
    Rue Lissignol 10
    +
    Genève
    Librairie du Boulevard
    -
    Rue de Carouge 34
    -
    Genève
    +
    Rue de Carouge 34
    +
    Genève
    Librairie Fahrenheit 451
    -
    Rue Voltaire 24
    -
    Genève
    +
    Rue Voltaire 24
    +
    Genève
    Mag’grottes
    -
    Rue des Grottes 9
    -
    Genève
    +
    Rue des Grottes 9
    +
    Genève
    @@ -89,20 +88,20 @@

    Neuchâtel

    Cérès autrement
    -
    Place des Halles 5
    -
    Neuchâtel
    +
    Place des Halles 5
    +
    Neuchâtel
    Librairie La Méridienne
    -
    Rue du Marché 6
    -
    La Chaux-de-Fonds
    +
    Rue du Marché 6
    +
    La Chaux-de-Fonds
    L’Aubier
    -
    Les Murailles 5
    -
    Montézillon
    +
    Les Murailles 5
    +
    Montézillon
    @@ -112,43 +111,43 @@

    Vaud

    Librairie La Fontaine SA
    -
    EPFL-Rolex Learning Center
    -
    Ecublens
    +
    EPFL-Rolex Learning Center
    +
    Ecublens
    Librairie Payot
    -
    Place Pépinet 3
    -
    Lausanne
    +
    Place Pépinet 3
    +
    Lausanne
    Magasin du Monde
    -
    Place de la Riponne 10
    -
    Lausanne
    +
    Place de la Riponne 10
    +
    Lausanne
    Topinambour
    -
    Avenue William-Fraisse 9
    -
    Lausanne
    +
    Avenue William-Fraisse 9
    +
    Lausanne
    Magasin la Fontaine
    -
    Chemin de la Fontaine 2
    -
    Nyon
    +
    Chemin de la Fontaine 2
    +
    Nyon
    Librairie l’Etage
    -
    Rue du Lac 44
    -
    Yverdon-les-Bains
    +
    Rue du Lac 44
    +
    Yverdon-les-Bains
    Librairie Payot
    -
    Rue des Remparts 1
    -
    Yverdon-les-Bains
    +
    Rue des Remparts 1
    +
    Yverdon-les-Bains
    @@ -157,57 +156,57 @@

    France

    Le Vert de Terre
    -
    186, rue Alexandre Bérard
    -
    01500 Ambérieu-en-Bugey
    +
    186, rue Alexandre Bérard
    +
    01500 Ambérieu-en-Bugey
    L’Arbre à Pain
    -
    150, avenue du Général Leclerc
    -
    15000 Aurillac
    +
    150, avenue du Général Leclerc
    +
    15000 Aurillac
    Bio Estella
    -
    ZA Pont de Joux bat B2
    -
    13390 Auriol
    +
    ZA Pont de Joux bat B2
    +
    13390 Auriol
    Biocoop La Canopee
    -
    3, allée de l’Ile aux Moineaux
    -
    25000 Besançon
    +
    3, allée de l’Ile aux Moineaux
    +
    25000 Besançon
    Biocoop Le Cres
    -
    10, route de Nîmes
    -
    34920 Le Cresse
    +
    10, route de Nîmes
    +
    34920 Le Cresse
    Biocoop du Haut-Doubs
    -
    9, rue Arthur Bourdin
    -
    25300 Pontarlier
    +
    9, rue Arthur Bourdin
    +
    25300 Pontarlier
    Biocoop Campana
    -
    8, avenue de l’Entreprise
    -
    Les Moutiers
    -
    12000 Rodez
    +
    8, avenue de l’Entreprise
    +
    Les Moutiers
    +
    12000 Rodez
    Biocoop La Gambille
    -
    10, rue de Robien
    -
    22000 Saint-Brieuc
    +
    10, rue de Robien
    +
    22000 Saint-Brieuc
    Apollon 74
    -
    Domaine David
    -
    14, chemin de la Ferme
    -
    74160 Saint-Julien-en-Genevois
    +
    Domaine David
    +
    14, chemin de la Ferme
    +
    74160 Saint-Julien-en-Genevois
    diff --git a/client/app/front-office/components/projet/projet.component.html b/client/app/front-office/components/projet/projet.component.html index 9277d67d4..f88bcc696 100644 --- a/client/app/front-office/components/projet/projet.component.html +++ b/client/app/front-office/components/projet/projet.component.html @@ -3,11 +3,11 @@ [style.backgroundImage]="'url(assets/images/illustration-pages/artisans_de_la_transition_notre-projet.jpg)'" >
    -
    +

    NOTRE PROJET

    -
    +

    Les journalistes jugent souvent LaRevueDurable très engagée. Ses lecteurs saluent sa rigueur. Ce sont les deux traits les plus caractéristiques de ce projet éditorial. diff --git a/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.html b/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.html index d9d7b9aee..349c7e557 100644 --- a/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.html +++ b/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.html @@ -7,7 +7,7 @@

    Page réservée aux facilitateurs

    -
    +

    Liste des facilitateurs

    @for (user of facilitators; track user) { diff --git a/client/app/front-office/components/session-facilitator/session-facilitator.component.html b/client/app/front-office/components/session-facilitator/session-facilitator.component.html index 9b19700df..b09820a59 100644 --- a/client/app/front-office/components/session-facilitator/session-facilitator.component.html +++ b/client/app/front-office/components/session-facilitator/session-facilitator.component.html @@ -7,7 +7,7 @@

    DEVENIR FACILITATEURS·TRICES !

    -
    +

    Vous aussi, vous pouvez vous engager dans la transition en devenant facilitatrice ou facilitateur de Conversations carbone. diff --git a/client/app/front-office/components/session-method/session-method.component.html b/client/app/front-office/components/session-method/session-method.component.html index c190893f8..71420cf09 100644 --- a/client/app/front-office/components/session-method/session-method.component.html +++ b/client/app/front-office/components/session-method/session-method.component.html @@ -3,12 +3,12 @@ [style.backgroundImage]="'url(assets/images/illustration-pages/conversations-carbone-methode.jpg)'" >

    -
    +

    LA METHODE DES CONVERSATIONS CARBONE

    -
    -
    Six rencontres pour comprendre, échanger et se mettre en mouvement
    +
    +

    Six rencontres pour comprendre, échanger et se mettre en mouvement

    Dans une Conversation carbone, une équipe de facilitation accompagne un groupe de huit à dix personnes pendant six ateliers participatifs structurés et dynamiques de deux heures. diff --git a/client/app/front-office/components/session-organisation/session-organisation.component.html b/client/app/front-office/components/session-organisation/session-organisation.component.html index 6cadcd961..64784e541 100644 --- a/client/app/front-office/components/session-organisation/session-organisation.component.html +++ b/client/app/front-office/components/session-organisation/session-organisation.component.html @@ -3,11 +3,11 @@ [style.backgroundImage]="'url(assets/images/illustration-pages/conversations-carbones_artisans1.jpg)'" >

    -
    +

    VOUS ÊTES UNE COLLECTIVITE OU UNE ORGANISATION ?

    -
    +

    Les cantons, communes, associations, établissements de formation, entreprises, etc. sont des acteurs clefs et les Conversation carbone sont un outil très précieux pour lancer ou entretenir une dynamique de diff --git a/client/app/front-office/components/sessions-incoming/sessions-incoming.component.html b/client/app/front-office/components/sessions-incoming/sessions-incoming.component.html index 24e95f24a..ca5cb50ed 100644 --- a/client/app/front-office/components/sessions-incoming/sessions-incoming.component.html +++ b/client/app/front-office/components/sessions-incoming/sessions-incoming.component.html @@ -3,7 +3,7 @@

    PROCHAINES SESSIONS

    -
    +

    Infos pratiques

    @@ -26,7 +26,7 @@

    Infos pratiques

    }
    -
    +

    Le nombre de participants à une Conversation carbone est limité afin de garantir une dynamique de groupe optimale. Si vous deviez vous désister avant le début de la session, merci de nous en diff --git a/client/app/front-office/components/soutenir/nous-faire-connaitre/nous-faire-connaitre.component.html b/client/app/front-office/components/soutenir/nous-faire-connaitre/nous-faire-connaitre.component.html index 949bbd7a2..d47e7a53b 100644 --- a/client/app/front-office/components/soutenir/nous-faire-connaitre/nous-faire-connaitre.component.html +++ b/client/app/front-office/components/soutenir/nous-faire-connaitre/nous-faire-connaitre.component.html @@ -4,10 +4,10 @@

    -
    +

    NOUS FAIRE CONNAÎTRE

    -
    +

    Vous pouvez mettre des flyers de notre association dans votre commerce ? Installer une « caisse qui parle » dans votre restaurant - une caisse à vin décorée et remplie d’anciens numéros de diff --git a/client/app/front-office/components/soutenir/offrir-la-revue/offrir-la-revue.component.html b/client/app/front-office/components/soutenir/offrir-la-revue/offrir-la-revue.component.html index 1fad71527..91c8e635b 100644 --- a/client/app/front-office/components/soutenir/offrir-la-revue/offrir-la-revue.component.html +++ b/client/app/front-office/components/soutenir/offrir-la-revue/offrir-la-revue.component.html @@ -4,11 +4,11 @@

    -
    +

    OFFRIR OU S'OFFRIR LAREVUEDURABLE

    -
    +

    LaRevueDurable est le cœur battant du travail des diff --git a/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.html b/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.html index 4f7954b2c..1a1633c44 100644 --- a/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.html +++ b/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.html @@ -4,11 +4,11 @@

    -
    +

    REJOINDRE L’ASSOCIATION

    -
    +

    Devenir membre des Artisans de la transition diff --git a/client/app/front-office/modules/cart/components/create-order/create-order.component.html b/client/app/front-office/modules/cart/components/create-order/create-order.component.html index 6523b7ee2..173253924 100644 --- a/client/app/front-office/modules/cart/components/create-order/create-order.component.html +++ b/client/app/front-office/modules/cart/components/create-order/create-order.component.html @@ -76,7 +76,7 @@

    Adresse de facturation

    @if (showConfirmationMessage) {

    Merci pour votre commande

    -

    +

    Consulter les articles et revues achetées dans mon compte . diff --git a/client/app/front-office/modules/shop/components/product-page/product-page.component.html b/client/app/front-office/modules/shop/components/product-page/product-page.component.html index 82e3a4ba0..36b2a394b 100644 --- a/client/app/front-office/modules/shop/components/product-page/product-page.component.html +++ b/client/app/front-office/modules/shop/components/product-page/product-page.component.html @@ -23,19 +23,18 @@ }

    {{ data.model.name }}

    + -
    +
    @if (data.model.readingDuration) { -
    - -
    - {{ data.model.readingDuration - }}{{ data.model.readingDuration > 1 ? 'minutes' : 'minute' }} de lecture -
    -
    + + + {{ data.model.readingDuration }}{{ data.model.readingDuration > 1 ? 'minutes' : 'minute' }} + de lecture + }
    -
    +
    @@ -57,8 +56,8 @@

    {{ data.model.name }}

    (click)="articlesMenuOpen = !articlesMenuOpen" > Voir les articles de ce numéro + >Voir les articles de ce numéro +
    @if (articlesMenuOpen) { @@ -98,7 +97,7 @@

    {{ data.model.name }}

    connectez-vous !
    } -
    +
    @if (data.model.file) {
    diff --git a/client/app/front-office/modules/shop/components/product-page/product-page.component.scss b/client/app/front-office/modules/shop/components/product-page/product-page.component.scss index 529e1d94f..04bb47fcd 100644 --- a/client/app/front-office/modules/shop/components/product-page/product-page.component.scss +++ b/client/app/front-office/modules/shop/components/product-page/product-page.component.scss @@ -66,7 +66,7 @@ } } -.container { - padding-right: 0; - padding-left: 0; +.duration { + margin-bottom: 1.5em !important; + font-weight: normal; } diff --git a/client/app/front-office/modules/shop/components/products-page/products-page.component.html b/client/app/front-office/modules/shop/components/products-page/products-page.component.html index dfb308a11..734485eb4 100644 --- a/client/app/front-office/modules/shop/components/products-page/products-page.component.html +++ b/client/app/front-office/modules/shop/components/products-page/products-page.component.html @@ -80,7 +80,7 @@ }
    -
    +
    @if (product.reviewNumber) { N° {{ product.reviewNumber }} } @@ -94,7 +94,7 @@ product.name }}
    diff --git a/client/styles.scss b/client/styles.scss index 44cdb1d21..2a46c1886 100644 --- a/client/styles.scss +++ b/client/styles.scss @@ -302,6 +302,10 @@ app-admin router-outlet + * { padding: 30px; } +.text-light { + color: color-mix(in srgb, var(--mat-sys-on-surface) 50%, transparent); +} + a { color: var(--mat-sys-primary-container); } @@ -383,3 +387,35 @@ a.app-link { } } } + +.rich-text { + h1, + h2, + h3, + h4, + h5, + h6, + p { + margin-bottom: 1em; + } +} + +.witnesses { + display: grid; + grid-template-columns: 50% 50%; + grid-gap: 20px; + + @media screen and (max-width: 700px) { + grid-template-columns: 100%; + } +} + +.witness { + display: inline-block; // prevents columns to break paragraph (from bottom to top of next column) + margin-bottom: 30px; + border-width: 0; + border-left-width: 5px; + border-style: solid; + border-color: var(--mat-sys-primary-container); + padding: 0 0 0 10px; +} diff --git a/package.json b/package.json index 074e10af5..c2e5fcb3f 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^20.0.0", - "@ecodev/natural": "^66.0.4", - "@ecodev/natural-editor": "^66.0.4", + "@ecodev/natural": "^66.0.5", + "@ecodev/natural-editor": "^66.0.5", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index 9faa4e9e9..d70c3f8b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -908,10 +908,10 @@ dependencies: tslib "^2.8.1" -"@ecodev/natural-editor@^66.0.4": - version "66.0.4" - resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.4.tgz#53cd3dca4c8c9f147da07dcd720d7eb3e1ffbbfd" - integrity sha512-seC43GIyBlNMd9B3cZpolSV5JR73Fg4m9C+daEI7eNS9Kby2jQDeObPBpNeOP1+L3RGxvmVGJtYPgIz2G1qX5A== +"@ecodev/natural-editor@^66.0.5": + version "66.0.5" + resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.5.tgz#2d937f839c0bb1f8f585859a3d0aa1d7b5591267" + integrity sha512-t/pOp009s9dg4YDbPXCSS2P7Av55ZlTXX0Im/Ldn/ngo62CBzLdjaSV1G6cYJEyYFKh8pPv7htfnfsAjU9Ffdw== dependencies: prosemirror-commands "^1.5.2" prosemirror-dropcursor "^1.8.1" @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^66.0.4": - version "66.0.4" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.4.tgz#8d570572960e19fbf909ab021d7430fa664388ca" - integrity sha512-ef05zTQhG1Va55qt103l07iAeESOVEpVurj8RS2vGOAAZQKFDfLSmAfYU/kK1pzRdHr+4vnJRWOurhxuCh8IiQ== +"@ecodev/natural@^66.0.5": + version "66.0.5" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.5.tgz#88159272d565b257a53377e290c2b2244e17d597" + integrity sha512-aPlopGv17dDi5v33VKqygYWuUFy8iaTuvs+yPXLZmhd0R7ht3245cKpbPmi7wEScAvGXdz5tpZPWLAWrTHWftQ== dependencies: extract-files "^13.0.0" tslib "^2.8.1" From 3781b65bf3edc221d11712fdee2588cd1603ce55 Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Tue, 2 Dec 2025 18:16:53 +0100 Subject: [PATCH 10/25] matFab and matMiniFab case #11936 --- .../components/home-block/home-block.component.html | 2 +- .../front-office/components/homepage/homepage.component.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/app/front-office/components/home-block/home-block.component.html b/client/app/front-office/components/home-block/home-block.component.html index 23cd07ce6..b9a5940e4 100644 --- a/client/app/front-office/components/home-block/home-block.component.html +++ b/client/app/front-office/components/home-block/home-block.component.html @@ -10,7 +10,7 @@ class="edit-button" color="none" style="color: black; background-color: white" - mat-fab + matFab (click)="editMode = true" > diff --git a/client/app/front-office/components/homepage/homepage.component.html b/client/app/front-office/components/homepage/homepage.component.html index 4e5d4da56..4d7ad6e0f 100644 --- a/client/app/front-office/components/homepage/homepage.component.html +++ b/client/app/front-office/components/homepage/homepage.component.html @@ -26,7 +26,7 @@ class="absolute" color="none" style="color: black; background-color: white" - mat-fab + matFab routerLink="/admin/news" > @@ -64,7 +64,7 @@ class="absolute" color="none" style="color: black; background-color: white" - mat-fab + matFab routerLink="/admin/event" > From 07cb6e4857f26566c170b4fbf5ebb00984e1744a Mon Sep 17 00:00:00 2001 From: Samuel Baptista Date: Wed, 3 Dec 2025 02:33:16 +0100 Subject: [PATCH 11/25] Upgrade natural, fab speed dial and minor fixes #11936 --- client/styles/artisans.scss | 10 +++++----- package.json | 6 +++--- yarn.lock | 24 ++++++++++++------------ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/styles/artisans.scss b/client/styles/artisans.scss index 18dc3dc7d..f3756f1aa 100644 --- a/client/styles/artisans.scss +++ b/client/styles/artisans.scss @@ -1,5 +1,5 @@ /* - * Theme 1 (light ): + * Theme 1 (light + dark): * Seed: #0E7ECB * Core Colors: * Primary: #0E7ECB @@ -8,7 +8,7 @@ * Neutral Variant: #FFFFFF * * Theme 1 Builder Link: - * http://material-foundation.github.io/material-theme-builder/?primary=0E7ECB&tertiary=EF6031&neutral=FFFFFF&neutralVariant=FFFFFF + * http://material-foundation.github.io/material-theme-builder/?primary=0E7ECB&tertiary=EF6031&neutral=FFFFFF&neutralVariant=FFFFFF&colorMatch=true */ @use '@angular/material' as mat; @@ -44,10 +44,10 @@ on-tertiary-fixed: #3A0B00, on-tertiary-fixed-variant: #852400, - error: #BA1A1A, - error-container: #FFDAD6, + error: #BC0100, + error-container: #EB0000, on-error: #FFFFFF, - on-error-container: #93000A, + on-error-container: #FFFBFF, surface: #FCF8F8, surface-variant: #E0E3E3, diff --git a/package.json b/package.json index c2e5fcb3f..61ca965fe 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,9 @@ "@angular/platform-browser": "^20.3.7", "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", - "@ecodev/fab-speed-dial": "^20.0.0", - "@ecodev/natural": "^66.0.5", - "@ecodev/natural-editor": "^66.0.5", + "@ecodev/fab-speed-dial": "^21.0.0", + "@ecodev/natural": "^66.0.6", + "@ecodev/natural-editor": "^66.0.6", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index d70c3f8b3..6b46b9769 100644 --- a/yarn.lock +++ b/yarn.lock @@ -901,17 +901,17 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@ecodev/fab-speed-dial@^20.0.0": - version "20.0.0" - resolved "https://registry.yarnpkg.com/@ecodev/fab-speed-dial/-/fab-speed-dial-20.0.0.tgz#b6506b11c1086df4e74e3919119aea47425f79d0" - integrity sha512-zVgUnA5Ze1Rktf1sq+CDVPT82bjFWgykxSHPrCQH3mKenL6A//5hQ5lW6bhCf++huk6cnYN/9EIunjmhPGdgcQ== +"@ecodev/fab-speed-dial@^21.0.0": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@ecodev/fab-speed-dial/-/fab-speed-dial-21.0.0.tgz#606279347e4dbf76b01cf675de7d89d6a9e98dce" + integrity sha512-YsykrjTPCCPz39Okw/7tJipi4/G8UTciLaFKUwg1HkDILZ1irRx1KKQ4q+Hpdad/7GAbdAyzoi1O/whtWnXbcQ== dependencies: tslib "^2.8.1" -"@ecodev/natural-editor@^66.0.5": - version "66.0.5" - resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.5.tgz#2d937f839c0bb1f8f585859a3d0aa1d7b5591267" - integrity sha512-t/pOp009s9dg4YDbPXCSS2P7Av55ZlTXX0Im/Ldn/ngo62CBzLdjaSV1G6cYJEyYFKh8pPv7htfnfsAjU9Ffdw== +"@ecodev/natural-editor@^66.0.6": + version "66.0.6" + resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.6.tgz#8399fea452d3ee5c841ccc29d6cb20ad41d4cad8" + integrity sha512-rwAzn2ViUjgHqbESf+Tt0ud/hiZE4UbdD2p2JENVdCfDejzNU6Pxw7tP84Z5ct9Ni/5QADZgSQIa7t+ebu5Ouw== dependencies: prosemirror-commands "^1.5.2" prosemirror-dropcursor "^1.8.1" @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^66.0.5": - version "66.0.5" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.5.tgz#88159272d565b257a53377e290c2b2244e17d597" - integrity sha512-aPlopGv17dDi5v33VKqygYWuUFy8iaTuvs+yPXLZmhd0R7ht3245cKpbPmi7wEScAvGXdz5tpZPWLAWrTHWftQ== +"@ecodev/natural@^66.0.6": + version "66.0.6" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.6.tgz#5e0e15be73802902afda4d0a51d120600769f60b" + integrity sha512-r5F0xX7Eig5F2Qcx57ahgM8VZh0q8Ez671qCvvpCbh5xqo9tAlm+HJ+w2LB7+hlIE8SpuZGid7Ef3LQMsLpcZg== dependencies: extract-files "^13.0.0" tslib "^2.8.1" From d5b2ef09f869f8c443c4e4559ba878eeab866132 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Fri, 5 Dec 2025 10:14:59 +0900 Subject: [PATCH 12/25] Update natural #11404 To make branch merging easier --- package.json | 4 ++-- yarn.lock | 47 ++++++++++++++++++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 61ca965fe..173793658 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^21.0.0", - "@ecodev/natural": "^66.0.6", - "@ecodev/natural-editor": "^66.0.6", + "@ecodev/natural": "^66.0.7", + "@ecodev/natural-editor": "^66.0.7", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index 6b46b9769..2a7347d10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -908,10 +908,10 @@ dependencies: tslib "^2.8.1" -"@ecodev/natural-editor@^66.0.6": - version "66.0.6" - resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.6.tgz#8399fea452d3ee5c841ccc29d6cb20ad41d4cad8" - integrity sha512-rwAzn2ViUjgHqbESf+Tt0ud/hiZE4UbdD2p2JENVdCfDejzNU6Pxw7tP84Z5ct9Ni/5QADZgSQIa7t+ebu5Ouw== +"@ecodev/natural-editor@^66.0.7": + version "66.0.7" + resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.7.tgz#4dd6fbb4ef323e27f3c50f3b96dc7bdc911fa0fa" + integrity sha512-g0RcNTtmEVTE4cnXJTXYOKVsGvohSgyWk9OVdZwyKu3pDSqx/HO7kKiCYUQ47CsfrZKwE09n0pidrkG3FeAjyQ== dependencies: prosemirror-commands "^1.5.2" prosemirror-dropcursor "^1.8.1" @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^66.0.6": - version "66.0.6" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.6.tgz#5e0e15be73802902afda4d0a51d120600769f60b" - integrity sha512-r5F0xX7Eig5F2Qcx57ahgM8VZh0q8Ez671qCvvpCbh5xqo9tAlm+HJ+w2LB7+hlIE8SpuZGid7Ef3LQMsLpcZg== +"@ecodev/natural@^66.0.7": + version "66.0.7" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.7.tgz#abded9b9af2630f7cb9f9b89db6f1da521ec4914" + integrity sha512-4sZVhUF/AqLtMCvFkhfC09Jtblm9t7jXYutnHqA3PLV/bFVJn5iBQlHObPkSBgSLAnrqNCwrqNP+jJmUkai7Xw== dependencies: extract-files "^13.0.0" tslib "^2.8.1" @@ -6769,7 +6769,16 @@ string-env-interpolation@^1.0.1: resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -6796,7 +6805,14 @@ string-width@^7.0.0, string-width@^7.2.0: get-east-asian-width "^1.0.0" strip-ansi "^7.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -7221,7 +7237,7 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -7239,6 +7255,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 7faae8bffd4fe46d8dbcc3b8b84bbde103f17ef1 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Tue, 9 Dec 2025 18:28:38 +0900 Subject: [PATCH 13/25] Drop obsolete isBody #12068 --- .../shared/components/breadcrumbs/breadcrumbs.component.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts b/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts index 5ae6b669e..3352fcd7d 100644 --- a/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts +++ b/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts @@ -1,4 +1,4 @@ -import {Component, DestroyRef, HostBinding, inject, Input, OnInit} from '@angular/core'; +import {Component, DestroyRef, inject, OnInit} from '@angular/core'; import {ActivatedRouteSnapshot, NavigationEnd, Router, RouterLink} from '@angular/router'; import {filter} from 'rxjs/operators'; import {MatButton} from '@angular/material/button'; @@ -17,11 +17,9 @@ export type Breadcrumb = { }) export class BreadcrumbsComponent implements OnInit { private readonly router = inject(Router); - private readonly destroyRef = inject(DestroyRef); - @HostBinding('class.') private isBody = true; - @Input() public breadcrumbs: Breadcrumb[] = []; + protected breadcrumbs: Breadcrumb[] = []; public ngOnInit(): void { this.update(); From 837e4baeb01a93fe5365c187292c9e424db98b62 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Tue, 9 Dec 2025 21:32:47 +0900 Subject: [PATCH 14/25] Update Natural #11936 --- package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 173793658..8cedac33d 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^21.0.0", - "@ecodev/natural": "^66.0.7", - "@ecodev/natural-editor": "^66.0.7", + "@ecodev/natural": "^66.0.8", + "@ecodev/natural-editor": "^66.0.8", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index 2a7347d10..cad64eba2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -908,10 +908,10 @@ dependencies: tslib "^2.8.1" -"@ecodev/natural-editor@^66.0.7": - version "66.0.7" - resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.7.tgz#4dd6fbb4ef323e27f3c50f3b96dc7bdc911fa0fa" - integrity sha512-g0RcNTtmEVTE4cnXJTXYOKVsGvohSgyWk9OVdZwyKu3pDSqx/HO7kKiCYUQ47CsfrZKwE09n0pidrkG3FeAjyQ== +"@ecodev/natural-editor@^66.0.8": + version "66.0.8" + resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.8.tgz#2da67320236d37ca4fd50657a633969e2e0de693" + integrity sha512-yD1RIlawf4mRqjR3TPEFnqW5iSXt1RC+CjNKXeSbbtDGIYeCzLdaJhppqAastXqiuIZrRBK1uZU0dmvqOjCafQ== dependencies: prosemirror-commands "^1.5.2" prosemirror-dropcursor "^1.8.1" @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^66.0.7": - version "66.0.7" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.7.tgz#abded9b9af2630f7cb9f9b89db6f1da521ec4914" - integrity sha512-4sZVhUF/AqLtMCvFkhfC09Jtblm9t7jXYutnHqA3PLV/bFVJn5iBQlHObPkSBgSLAnrqNCwrqNP+jJmUkai7Xw== +"@ecodev/natural@^66.0.8": + version "66.0.8" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.8.tgz#aba468666483e0ff7275089809abdfe7d021c06e" + integrity sha512-WcGDOxTAWuRareWQkqfHGyYhhnBBzU3KWebA5X7tk5HzY4WuuyqcYrjVFQtNmbot6aSL2nWAoSmBdL46aYeLaQ== dependencies: extract-files "^13.0.0" tslib "^2.8.1" From a6d244bc6078a10fc663a9932df5b43121447967 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Tue, 9 Dec 2025 21:44:01 +0900 Subject: [PATCH 15/25] Reference CSS variables with var(), not raw strings #11936 --- client/app/admin/admin/admin.component.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/app/admin/admin/admin.component.scss b/client/app/admin/admin/admin.component.scss index 914d9a56d..be6ba0c52 100644 --- a/client/app/admin/admin/admin.component.scss +++ b/client/app/admin/admin/admin.component.scss @@ -30,8 +30,8 @@ natural-sidenav-content { .header-toolbar { @include mat.toolbar-overrides( ( - container-background-color: --mat-sys-surface-container, - container-text-color: --mat-sys-on-surface, + container-background-color: var(--mat-sys-surface-container), + container-text-color: var(--mat-sys-on-surface), ) ); } From 342fd20d94d1ff583f07368352b3462df3e17977 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Wed, 10 Dec 2025 10:31:43 +0900 Subject: [PATCH 16/25] Add Copilot instructions #11936 As defined by Angular in https://github.com/angular/angular/blob/main/packages/core/resources/best-practices.md --- .github/copilot-instructions.md | 55 +++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/copilot-instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..47a861b16 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,55 @@ +You are an expert in TypeScript, Angular, and scalable web application development. You write functional, maintainable, performant, and accessible code following Angular and TypeScript best practices. + +## TypeScript Best Practices + +- Use strict type checking +- Prefer type inference when the type is obvious +- Avoid the `any` type; use `unknown` when type is uncertain + +## Angular Best Practices + +- Always use standalone components over NgModules +- Must NOT set `standalone: true` inside Angular decorators. It's the default in Angular v20+. +- Use signals for state management +- Implement lazy loading for feature routes +- Do NOT use the `@HostBinding` and `@HostListener` decorators. Put host bindings inside the `host` object of the `@Component` or `@Directive` decorator instead +- Use `NgOptimizedImage` for all static images. + - `NgOptimizedImage` does not work for inline base64 images. + +## Accessibility Requirements + +- It MUST pass all AXE checks. +- It MUST follow all WCAG AA minimums, including focus management, color contrast, and ARIA attributes. + +### Components + +- Keep components small and focused on a single responsibility +- Use `input()` and `output()` functions instead of decorators +- Use `computed()` for derived state +- Set `changeDetection: ChangeDetectionStrategy.OnPush` in `@Component` decorator +- Prefer inline templates for small components +- Prefer Reactive forms instead of Template-driven ones +- Do NOT use `ngClass`, use `class` bindings instead +- Do NOT use `ngStyle`, use `style` bindings instead +- When using external templates/styles, use paths relative to the component TS file. + +## State Management + +- Use signals for local component state +- Use `computed()` for derived state +- Keep state transformations pure and predictable +- Do NOT use `mutate` on signals, use `update` or `set` instead + +## Templates + +- Keep templates simple and avoid complex logic +- Use native control flow (`@if`, `@for`, `@switch`) instead of `*ngIf`, `*ngFor`, `*ngSwitch` +- Use the async pipe to handle observables +- Do not assume globals like (`new Date()`) are available. +- Do not write arrow functions in templates (they are not supported). + +## Services + +- Design services around a single responsibility +- Use the `providedIn: 'root'` option for singleton services +- Use the `inject()` function instead of constructor injection From 78722571237f992743b614b1a7537628aada32ba Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Wed, 10 Dec 2025 14:20:01 +0900 Subject: [PATCH 17/25] Enable trusted publishing #11936 And stop publishing on GitHub Packages because it does not provide any value --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f427b558a..43a036bb2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,6 +26,7 @@ jobs: - uses: actions/setup-node@v4 with: + node-version: '24' node-version: '22' - uses: shivammathur/setup-php@v2 From 4fba20a4e281afc16abd97b85c73581a0b327a05 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Wed, 10 Dec 2025 16:43:38 +0900 Subject: [PATCH 18/25] Use standard "Natural" prefix #11936 --- package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 8cedac33d..fb4575a31 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^21.0.0", - "@ecodev/natural": "^66.0.8", - "@ecodev/natural-editor": "^66.0.8", + "@ecodev/natural": "^66.0.13", + "@ecodev/natural-editor": "^66.0.13", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index cad64eba2..f301cc87f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -908,10 +908,10 @@ dependencies: tslib "^2.8.1" -"@ecodev/natural-editor@^66.0.8": - version "66.0.8" - resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.8.tgz#2da67320236d37ca4fd50657a633969e2e0de693" - integrity sha512-yD1RIlawf4mRqjR3TPEFnqW5iSXt1RC+CjNKXeSbbtDGIYeCzLdaJhppqAastXqiuIZrRBK1uZU0dmvqOjCafQ== +"@ecodev/natural-editor@^66.0.13": + version "66.0.13" + resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.13.tgz#72d3ba64fb894226bc86685f648e0925458e17af" + integrity sha512-aS+JJHJHqY1mCbSzCpnI4BmL+JMwd6AaIbtGC2rirxmfIk0ThZB5kIC2P7JWjzfyFcpPljwsNPzhxlLNp0GprA== dependencies: prosemirror-commands "^1.5.2" prosemirror-dropcursor "^1.8.1" @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^66.0.8": - version "66.0.8" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.8.tgz#aba468666483e0ff7275089809abdfe7d021c06e" - integrity sha512-WcGDOxTAWuRareWQkqfHGyYhhnBBzU3KWebA5X7tk5HzY4WuuyqcYrjVFQtNmbot6aSL2nWAoSmBdL46aYeLaQ== +"@ecodev/natural@^66.0.13": + version "66.0.13" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.13.tgz#88e120a31b0f40cae567cb6aa4ff856712e38853" + integrity sha512-KTwL59uWkN/Uo20IkH8KKRSbP7+ReyXaJqeIwbm0FThnA+HeV9U512U8UAqAR2Kk65UNCJyareAixeAk1OLgsQ== dependencies: extract-files "^13.0.0" tslib "^2.8.1" From 9d91c96d55d89359c114caa96fcfbf7eb2efb48a Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Wed, 10 Dec 2025 16:50:57 +0900 Subject: [PATCH 19/25] Revert accidental double node version #11936 --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 43a036bb2..f427b558a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,7 +26,6 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: '24' node-version: '22' - uses: shivammathur/setup-php@v2 From f6cef7e960cffc9f2fe62769b30074e9270e853a Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Wed, 10 Dec 2025 18:32:33 +0900 Subject: [PATCH 20/25] Upgrade type-fest #11936 Because why not --- package.json | 2 +- yarn.lock | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fb4575a31..dd99b9fe0 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "rxjs": "~7.8.2", "striptags": "^4.0.0-alpha.4", "tslib": "^2.8.1", - "type-fest": "^4.41.0", + "type-fest": "^5.3.1", "zone.js": "~0.15.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index f301cc87f..889fddb5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6869,6 +6869,11 @@ sync-fetch@0.6.0-2: timeout-signal "^2.0.0" whatwg-mimetype "^4.0.0" +tagged-tag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tagged-tag/-/tagged-tag-1.0.0.tgz#a0b5917c2864cba54841495abfa3f6b13edcf4d6" + integrity sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng== + tar@^6.1.11: version "6.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" @@ -6996,10 +7001,12 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^4.41.0: - version "4.41.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" - integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== +type-fest@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.3.1.tgz#251b8d0a813c1dbccf1f9450ba5adcdf7072adc2" + integrity sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg== + dependencies: + tagged-tag "^1.0.0" type-is@^2.0.0, type-is@^2.0.1: version "2.0.1" From 85ceab140f82c96aaa07734715b34fc918cc4fe9 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 11 Dec 2025 14:37:35 +0900 Subject: [PATCH 21/25] More readonly members #11936 --- client/app/admin/order/order/order.component.ts | 2 +- .../rejoindre-association/rejoindre-association.component.ts | 2 +- client/app/front-office/front-office.component.ts | 4 ++-- .../cart/components/create-order/create-order.component.ts | 2 +- .../shop/components/products-page/products-page.component.ts | 2 +- .../shop/components/subscriptions/subscriptions.component.ts | 2 +- client/app/profile/components/profile/profile.component.ts | 4 ++-- .../app/profile/components/purchases/purchases.component.ts | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/client/app/admin/order/order/order.component.ts b/client/app/admin/order/order/order.component.ts index 429cce51f..28d9f8e92 100644 --- a/client/app/admin/order/order/order.component.ts +++ b/client/app/admin/order/order/order.component.ts @@ -50,7 +50,7 @@ export class OrderComponent { /** * Template usage */ - protected UserRole = UserRole; + protected readonly UserRole = UserRole; public constructor() { this.viewer = this.dialogData.activatedRoute.snapshot.data.viewer diff --git a/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.ts b/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.ts index e18c023a1..4a2d07279 100644 --- a/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.ts +++ b/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.ts @@ -12,7 +12,7 @@ import {AddToCartComponent} from '../../../modules/shop/components/add-to-cart/a export class RejoindreAssociationComponent implements OnInit { protected readonly productService = inject(ProductService); - protected ProductType = ProductType; + protected readonly ProductType = ProductType; protected membershipProduct!: Product['product']; diff --git a/client/app/front-office/front-office.component.ts b/client/app/front-office/front-office.component.ts index f99bff4d0..dd91940a2 100644 --- a/client/app/front-office/front-office.component.ts +++ b/client/app/front-office/front-office.component.ts @@ -269,8 +269,8 @@ export class FrontOfficeComponent implements OnInit, AfterViewInit { protected mobileNavigation: MenuItem[] = []; - protected Currency = Currency; - protected UserRole = UserRole; + protected readonly Currency = Currency; + protected readonly UserRole = UserRole; public ngOnInit(): void { this.userService.getViewerObservable().subscribe(viewer => (this.viewer = viewer)); diff --git a/client/app/front-office/modules/cart/components/create-order/create-order.component.ts b/client/app/front-office/modules/cart/components/create-order/create-order.component.ts index a45bbe222..f648ead15 100644 --- a/client/app/front-office/modules/cart/components/create-order/create-order.component.ts +++ b/client/app/front-office/modules/cart/components/create-order/create-order.component.ts @@ -67,7 +67,7 @@ export class CreateOrderComponent implements OnInit { /** * For template usage */ - protected PaymentMethod = PaymentMethod; + protected readonly PaymentMethod = PaymentMethod; /** * If true, cart is hidden and confirmation message is shown. diff --git a/client/app/front-office/modules/shop/components/products-page/products-page.component.ts b/client/app/front-office/modules/shop/components/products-page/products-page.component.ts index ea284d6c2..0549051ce 100644 --- a/client/app/front-office/modules/shop/components/products-page/products-page.component.ts +++ b/client/app/front-office/modules/shop/components/products-page/products-page.component.ts @@ -86,7 +86,7 @@ export class ProductsPageComponent extends AbstractInfiniteLoadList | null = null; - protected ProductType = ProductType; + protected readonly ProductType = ProductType; public ngOnInit(): void { this.subscriptionService diff --git a/client/app/profile/components/profile/profile.component.ts b/client/app/profile/components/profile/profile.component.ts index b0fdb6e22..049534c46 100644 --- a/client/app/profile/components/profile/profile.component.ts +++ b/client/app/profile/components/profile/profile.component.ts @@ -35,8 +35,8 @@ export class ProfileComponent implements OnInit { protected readonly productService = inject(ProductService); protected viewer: CurrentUserForProfile['viewer'] = null; - protected ProductType = ProductType; - protected Membership = Membership; + protected readonly ProductType = ProductType; + protected readonly Membership = Membership; protected membershipProduct: Product['product'] | null = null; diff --git a/client/app/profile/components/purchases/purchases.component.ts b/client/app/profile/components/purchases/purchases.component.ts index 6b9d1c309..7817ea420 100644 --- a/client/app/profile/components/purchases/purchases.component.ts +++ b/client/app/profile/components/purchases/purchases.component.ts @@ -41,7 +41,7 @@ import {AsyncPipe, DatePipe} from '@angular/common'; export class PurchasesComponent extends NaturalAbstractList implements OnInit { private readonly naturalFileService = inject(NaturalFileService); - protected ProductType = ProductType; + protected readonly ProductType = ProductType; public constructor() { super(inject(PurchaseService)); From a85a56fc2d03badb1f7a410bdf734a3fb8d1ade8 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 11 Dec 2025 15:17:26 +0900 Subject: [PATCH 22/25] Respect file name convention #11936 --- .../app/admin/{admin-routing.module.ts => admin.routes.ts} | 0 client/app/{app-routing.module.ts => app.routes.ts} | 6 +++--- ...ront-office-routing.module.ts => front-office.routes.ts} | 6 +++--- .../modules/cart/{cart-routing.module.ts => cart.routes.ts} | 0 .../modules/shop/{shop-routing.module.ts => shop.routes.ts} | 0 .../{profile-routing.module.ts => profile.routes.ts} | 0 client/app/user/{user-routing.module.ts => user.routes.ts} | 0 client/main.ts | 2 +- 8 files changed, 7 insertions(+), 7 deletions(-) rename client/app/admin/{admin-routing.module.ts => admin.routes.ts} (100%) rename client/app/{app-routing.module.ts => app.routes.ts} (75%) rename client/app/front-office/{front-office-routing.module.ts => front-office.routes.ts} (98%) rename client/app/front-office/modules/cart/{cart-routing.module.ts => cart.routes.ts} (100%) rename client/app/front-office/modules/shop/{shop-routing.module.ts => shop.routes.ts} (100%) rename client/app/profile/{profile-routing.module.ts => profile.routes.ts} (100%) rename client/app/user/{user-routing.module.ts => user.routes.ts} (100%) diff --git a/client/app/admin/admin-routing.module.ts b/client/app/admin/admin.routes.ts similarity index 100% rename from client/app/admin/admin-routing.module.ts rename to client/app/admin/admin.routes.ts diff --git a/client/app/app-routing.module.ts b/client/app/app.routes.ts similarity index 75% rename from client/app/app-routing.module.ts rename to client/app/app.routes.ts index f3b6a235e..2ffc2a66a 100644 --- a/client/app/app-routing.module.ts +++ b/client/app/app.routes.ts @@ -12,18 +12,18 @@ export const routes: Routes = [ }, { path: 'admin', - loadChildren: () => import('./admin/admin-routing.module').then(m => m.routes), + loadChildren: () => import('./admin/admin.routes').then(m => m.routes), }, { // Registration path: 'user', component: FrontOfficeComponent, - loadChildren: () => import('./user/user-routing.module').then(m => m.routes), + loadChildren: () => import('./user/user.routes').then(m => m.routes), }, { path: '', component: FrontOfficeComponent, resolve: {viewer: resolveViewer}, - loadChildren: () => import('./front-office/front-office-routing.module').then(m => m.routes), + loadChildren: () => import('./front-office/front-office.routes').then(m => m.routes), }, ]; diff --git a/client/app/front-office/front-office-routing.module.ts b/client/app/front-office/front-office.routes.ts similarity index 98% rename from client/app/front-office/front-office-routing.module.ts rename to client/app/front-office/front-office.routes.ts index 089e05e15..f9c201b69 100644 --- a/client/app/front-office/front-office-routing.module.ts +++ b/client/app/front-office/front-office.routes.ts @@ -386,7 +386,7 @@ export const routes: Routes = [ }, { path: 'mon-compte', - loadChildren: () => import('../profile/profile-routing.module').then(m => m.routes), + loadChildren: () => import('../profile/profile.routes').then(m => m.routes), }, { path: 'larevuedurable', @@ -431,11 +431,11 @@ export const routes: Routes = [ }, { path: 'larevuedurable', - loadChildren: () => import('./modules/shop/shop-routing.module').then(m => m.routes), + loadChildren: () => import('./modules/shop/shop.routes').then(m => m.routes), }, { path: 'panier', - loadChildren: () => import('./modules/cart/cart-routing.module').then(m => m.routes), + loadChildren: () => import('./modules/cart/cart.routes').then(m => m.routes), }, { path: 'mentions-legales', diff --git a/client/app/front-office/modules/cart/cart-routing.module.ts b/client/app/front-office/modules/cart/cart.routes.ts similarity index 100% rename from client/app/front-office/modules/cart/cart-routing.module.ts rename to client/app/front-office/modules/cart/cart.routes.ts diff --git a/client/app/front-office/modules/shop/shop-routing.module.ts b/client/app/front-office/modules/shop/shop.routes.ts similarity index 100% rename from client/app/front-office/modules/shop/shop-routing.module.ts rename to client/app/front-office/modules/shop/shop.routes.ts diff --git a/client/app/profile/profile-routing.module.ts b/client/app/profile/profile.routes.ts similarity index 100% rename from client/app/profile/profile-routing.module.ts rename to client/app/profile/profile.routes.ts diff --git a/client/app/user/user-routing.module.ts b/client/app/user/user.routes.ts similarity index 100% rename from client/app/user/user-routing.module.ts rename to client/app/user/user.routes.ts diff --git a/client/main.ts b/client/main.ts index 9e9011a15..3225a78ab 100644 --- a/client/main.ts +++ b/client/main.ts @@ -1,6 +1,6 @@ import {APP_ID, inject, LOCALE_ID, provideAppInitializer, provideZoneChangeDetection} from '@angular/core'; import {AppComponent} from './app/app.component'; -import {routes} from './app/app-routing.module'; +import {routes} from './app/app.routes'; import {bootstrapApplication} from '@angular/platform-browser'; import {Apollo} from 'apollo-angular'; import {MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions} from '@angular/material/tooltip'; From 12f77bf8b2479b1ae103fbc5032540fdce37ebb6 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 11 Dec 2025 15:42:34 +0900 Subject: [PATCH 23/25] Adopt standard app.config.ts #11936 --- client/app/app.config.ts | 118 +++++++++++++++++++++++++++++++++++++++ client/main.ts | 114 +------------------------------------ 2 files changed, 121 insertions(+), 111 deletions(-) create mode 100644 client/app/app.config.ts diff --git a/client/app/app.config.ts b/client/app/app.config.ts new file mode 100644 index 000000000..0e9fd8bb9 --- /dev/null +++ b/client/app/app.config.ts @@ -0,0 +1,118 @@ +import { + APP_ID, + ApplicationConfig, + inject, + LOCALE_ID, + provideAppInitializer, + provideZoneChangeDetection, +} from '@angular/core'; +import {routes} from './app.routes'; +import {Apollo} from 'apollo-angular'; +import {MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions} from '@angular/material/tooltip'; +import {apolloOptionsProvider} from './shared/config/apollo-options.provider'; +import {LocalizedPaginatorIntlService} from './shared/services/localized-paginator-intl.service'; +import {DATE_PIPE_DEFAULT_OPTIONS, DatePipeConfig, registerLocaleData} from '@angular/common'; +import { + activityInterceptor, + graphqlQuerySigner, + naturalProviders, + NaturalSwissParsingDateAdapter, + provideErrorHandler, + provideIcons, + provideSeo, +} from '@ecodev/natural'; +import {provideHttpClient, withInterceptors} from '@angular/common/http'; +import {MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginatorDefaultOptions, MatPaginatorIntl} from '@angular/material/paginator'; +import { + DateAdapter, + ErrorStateMatcher, + provideNativeDateAdapter, + ShowOnDirtyErrorStateMatcher, +} from '@angular/material/core'; +import {LoggerExtraService} from './shared/services/logger-extra.service'; +import {localConfig} from './shared/generated-config'; +import localeFRCH from '@angular/common/locales/fr-CH'; +import {provideRouter, withInMemoryScrolling, withRouterConfig} from '@angular/router'; +import {MAT_TABS_CONFIG, MatTabsConfig} from '@angular/material/tabs'; + +registerLocaleData(localeFRCH); + +const matTooltipCustomConfig: MatTooltipDefaultOptions = { + showDelay: 5, + hideDelay: 5, + touchendHideDelay: 5, + touchGestures: 'off', +}; + +export const appConfig: ApplicationConfig = { + providers: [ + provideZoneChangeDetection({eventCoalescing: true}), + provideNativeDateAdapter(), + Apollo, + naturalProviders, + provideErrorHandler(localConfig.log.url, LoggerExtraService), + provideSeo({ + applicationName: 'Les artisans de la transition', + defaultDescription: 'Comprendre l’urgence écologique, Des pistes pour y répondre', + defaultRobots: 'all, index, follow', + }), + provideIcons({}), + {provide: APP_ID, useValue: 'serverApp'}, + { + provide: DateAdapter, + useClass: NaturalSwissParsingDateAdapter, + }, + { + provide: DATE_PIPE_DEFAULT_OPTIONS, + useValue: {dateFormat: 'dd.MM.y HH:mm'} satisfies DatePipeConfig, + }, + { + // Use OnDirty instead of default OnTouched, that allows to validate while editing. Touched is updated after blur. + provide: ErrorStateMatcher, + useClass: ShowOnDirtyErrorStateMatcher, + }, + { + // See https://github.com/angular/components/issues/26580 + provide: MAT_PAGINATOR_DEFAULT_OPTIONS, + useValue: { + formFieldAppearance: 'fill', + } satisfies MatPaginatorDefaultOptions, + }, + { + provide: MAT_TABS_CONFIG, + useValue: { + stretchTabs: false, + } satisfies MatTabsConfig, + }, + { + provide: LOCALE_ID, + useValue: 'fr-CH', + }, + { + provide: DATE_PIPE_DEFAULT_OPTIONS, + useValue: { + timezone: 'fr-CH', + } satisfies DatePipeConfig, + }, + { + provide: MatPaginatorIntl, + useClass: LocalizedPaginatorIntlService, + }, + apolloOptionsProvider, + {provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: matTooltipCustomConfig}, + provideHttpClient(withInterceptors([activityInterceptor, graphqlQuerySigner(localConfig.signedQueries.key)])), + provideRouter( + routes, + withRouterConfig({ + paramsInheritanceStrategy: 'always', + }), + withInMemoryScrolling({ + scrollPositionRestoration: 'top', + }), + ), + provideAppInitializer(() => { + const dateAdapter = inject(DateAdapter); + dateAdapter.setLocale('fr-ch'); + }), + ], +}; diff --git a/client/main.ts b/client/main.ts index 3225a78ab..d485741da 100644 --- a/client/main.ts +++ b/client/main.ts @@ -1,115 +1,7 @@ -import {APP_ID, inject, LOCALE_ID, provideAppInitializer, provideZoneChangeDetection} from '@angular/core'; -import {AppComponent} from './app/app.component'; -import {routes} from './app/app.routes'; import {bootstrapApplication} from '@angular/platform-browser'; -import {Apollo} from 'apollo-angular'; -import {MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions} from '@angular/material/tooltip'; -import {apolloOptionsProvider} from './app/shared/config/apollo-options.provider'; -import {LocalizedPaginatorIntlService} from './app/shared/services/localized-paginator-intl.service'; -import {DATE_PIPE_DEFAULT_OPTIONS, DatePipeConfig, registerLocaleData} from '@angular/common'; -import { - activityInterceptor, - graphqlQuerySigner, - naturalProviders, - NaturalSwissParsingDateAdapter, - provideErrorHandler, - provideIcons, - provideSeo, -} from '@ecodev/natural'; -import {provideHttpClient, withInterceptors} from '@angular/common/http'; -import {MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginatorDefaultOptions, MatPaginatorIntl} from '@angular/material/paginator'; -import { - DateAdapter, - ErrorStateMatcher, - provideNativeDateAdapter, - ShowOnDirtyErrorStateMatcher, -} from '@angular/material/core'; -import {LoggerExtraService} from './app/shared/services/logger-extra.service'; -import {localConfig} from './app/shared/generated-config'; -import localeFRCH from '@angular/common/locales/fr-CH'; -import {provideRouter, withInMemoryScrolling, withRouterConfig} from '@angular/router'; -import {MAT_TABS_CONFIG, MatTabsConfig} from '@angular/material/tabs'; - -registerLocaleData(localeFRCH); - -const matTooltipCustomConfig: MatTooltipDefaultOptions = { - showDelay: 5, - hideDelay: 5, - touchendHideDelay: 5, - touchGestures: 'off', -}; +import {appConfig} from './app/app.config'; +import {AppComponent} from './app/app.component'; -bootstrapApplication(AppComponent, { - providers: [ - provideZoneChangeDetection({eventCoalescing: true}), - provideNativeDateAdapter(), - Apollo, - naturalProviders, - provideErrorHandler(localConfig.log.url, LoggerExtraService), - provideSeo({ - applicationName: 'Les artisans de la transition', - defaultDescription: 'Comprendre l’urgence écologique, Des pistes pour y répondre', - defaultRobots: 'all, index, follow', - }), - provideIcons({}), - {provide: APP_ID, useValue: 'serverApp'}, - { - provide: DateAdapter, - useClass: NaturalSwissParsingDateAdapter, - }, - { - provide: DATE_PIPE_DEFAULT_OPTIONS, - useValue: {dateFormat: 'dd.MM.y HH:mm'} satisfies DatePipeConfig, - }, - { - // Use OnDirty instead of default OnTouched, that allows to validate while editing. Touched is updated after blur. - provide: ErrorStateMatcher, - useClass: ShowOnDirtyErrorStateMatcher, - }, - { - // See https://github.com/angular/components/issues/26580 - provide: MAT_PAGINATOR_DEFAULT_OPTIONS, - useValue: { - formFieldAppearance: 'fill', - } satisfies MatPaginatorDefaultOptions, - }, - { - provide: MAT_TABS_CONFIG, - useValue: { - stretchTabs: false, - } satisfies MatTabsConfig, - }, - { - provide: LOCALE_ID, - useValue: 'fr-CH', - }, - { - provide: DATE_PIPE_DEFAULT_OPTIONS, - useValue: { - timezone: 'fr-CH', - } satisfies DatePipeConfig, - }, - { - provide: MatPaginatorIntl, - useClass: LocalizedPaginatorIntlService, - }, - apolloOptionsProvider, - {provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: matTooltipCustomConfig}, - provideHttpClient(withInterceptors([activityInterceptor, graphqlQuerySigner(localConfig.signedQueries.key)])), - provideRouter( - routes, - withRouterConfig({ - paramsInheritanceStrategy: 'always', - }), - withInMemoryScrolling({ - scrollPositionRestoration: 'top', - }), - ), - provideAppInitializer(() => { - const dateAdapter = inject(DateAdapter); - dateAdapter.setLocale('fr-ch'); - }), - ], -}).catch((err: unknown) => { +bootstrapApplication(AppComponent, appConfig).catch((err: unknown) => { console.error(err); }); From 4984b14f64d1fd4e0455f79f492789bd95ec23ac Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 18 Dec 2025 19:29:38 +0900 Subject: [PATCH 24/25] Update Natural for fixed scrolling issue #11936 --- package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index dd99b9fe0..be2d7c602 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "@angular/router": "^20.3.7", "@apollo/client": "^3.13.7", "@ecodev/fab-speed-dial": "^21.0.0", - "@ecodev/natural": "^66.0.13", - "@ecodev/natural-editor": "^66.0.13", + "@ecodev/natural": "^66.0.14", + "@ecodev/natural-editor": "^66.0.14", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index 889fddb5d..ac935374b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -908,10 +908,10 @@ dependencies: tslib "^2.8.1" -"@ecodev/natural-editor@^66.0.13": - version "66.0.13" - resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.13.tgz#72d3ba64fb894226bc86685f648e0925458e17af" - integrity sha512-aS+JJHJHqY1mCbSzCpnI4BmL+JMwd6AaIbtGC2rirxmfIk0ThZB5kIC2P7JWjzfyFcpPljwsNPzhxlLNp0GprA== +"@ecodev/natural-editor@^66.0.14": + version "66.0.14" + resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-66.0.14.tgz#a769cc4a59cd8a1b002c932bc0bc78d4d6ec3581" + integrity sha512-itZ7IYgRuPKLmBz5ex5s7euTD1s2pWVmd1coH0p2lqPW5ydvtHPQXWFthBdYU2m2LgDTdVAVddmL4FpFW8kMQw== dependencies: prosemirror-commands "^1.5.2" prosemirror-dropcursor "^1.8.1" @@ -933,10 +933,10 @@ resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a" integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ== -"@ecodev/natural@^66.0.13": - version "66.0.13" - resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.13.tgz#88e120a31b0f40cae567cb6aa4ff856712e38853" - integrity sha512-KTwL59uWkN/Uo20IkH8KKRSbP7+ReyXaJqeIwbm0FThnA+HeV9U512U8UAqAR2Kk65UNCJyareAixeAk1OLgsQ== +"@ecodev/natural@^66.0.14": + version "66.0.14" + resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-66.0.14.tgz#f521cfe3fc7dea3fecda91ce8e8f1c732293590c" + integrity sha512-U6CPN4538lQSnAs0PVutOwL1oYSUdgVpLf+/imTJk++xyid6/19rL2I9N+8K31jCeLVXHaZFYfm6Qk/gCUgVxg== dependencies: extract-files "^13.0.0" tslib "^2.8.1" From 5b014de256782975a3e7384a41a4942b1e445b4b Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Fri, 19 Dec 2025 14:53:30 +0900 Subject: [PATCH 25/25] Only fetch used Material icons #9833 Custom script `extract-material-icons` found 195/6410 (3%) icons probably used --- client/index.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/index.html b/client/index.html index f2843d9ef..800d37bcc 100644 --- a/client/index.html +++ b/client/index.html @@ -15,7 +15,10 @@ - +