adding services to the gaufre button

hiding audioconf for now as i dont have any logo
This commit is contained in:
Emmanuel Pelletier
2024-05-02 12:07:25 +02:00
parent 73beeaf9ec
commit ab7cf18638
7 changed files with 117 additions and 30 deletions

View File

@@ -1,11 +1,30 @@
[
{
"id": "audioconf",
"name": "AudioConf",
"url": "https://audioconf.numerique.gouv.fr",
"tagline": "**AudioConf**, conférences téléphoneiques <br>pour les agents de l'État",
"homepageType": "custom",
"entity": "Gouvernement",
"enabled": false
},
{
"id": "demarches",
"name": "Démarches simplifiées",
"url": "https://www.demarches-simplifiees.fr/",
"tagline": "",
"homepageType": "proconnect",
"entity": "Gouvernement",
"enabled": true
},
{
"id": "equipes",
"name": "Equipes",
"url": "https://desk-staging.beta.numerique.gouv.fr/",
"tagline": "**Equipes**, la gestion de groupes <br>centralisée pour tous vos projets",
"homepageType": "proconnect",
"entity": "Gouvernement"
"entity": "Gouvernement",
"enabled": false
},
{
"id": "france-transfert",
@@ -13,7 +32,16 @@
"url": "https://francetransfert.numerique.gouv.fr/upload",
"tagline": "**France Transfert** permet denvoyer des fichiers <br>volumineux non sensibles de manière sécurisée <br>à un agent de lEtat ou entre agents",
"homepageType": "custom",
"entity": "Gouvernement"
"entity": "Gouvernement",
"enabled": true
},
{
"id": "grist",
"name": "Grist",
"url": "https://grist.incubateur.net/",
"tagline": "**Grist**, une feuille de calcul simple, <br>flexible, moderne et open source <br>qui va au-delà de la grille.",
"homepageType": "proconnect",
"enabled": true
},
{
"id": "messagerie",
@@ -21,7 +49,26 @@
"url": "https://webmail.numerique.gouv.fr/appsuite/",
"tagline": "**Messagerie** de l'État <br>le mail simple, centralisé et sécurisé",
"homepageType": "email",
"entity": "Gouvernement"
"entity": "Gouvernement",
"enabled": true
},
{
"id": "pad",
"name": "Notepad de l'État",
"url": "https://pad.numerique.gouv.fr/",
"tagline": "**Notepad de lÉtat** <br>Le meilleur moyen décrire <br> et partager votre savoir <br>en markdown",
"homepageType": "proconnect",
"entity": "Gouvernement",
"enabled": true
},
{
"id": "rdv",
"name": "RDV Service Public",
"url": "https://rdv.anct.gouv.fr/",
"tagline": "**RDV Service Public** <br>facilitez la gestion <br>et la prise de rendez-vous en ligne",
"homepageType": "email",
"entity": "Gouvernement",
"enabled": true
},
{
"id": "resana",
@@ -29,7 +76,8 @@
"url": "https://resana.numerique.gouv.fr/public/",
"tagline": "**Resana** <br>groupes de travail <br>et suite collaborative en ligne",
"homepageType": "email-or-proconnect",
"entity": "Gouvernement"
"entity": "Gouvernement",
"enabled": true
},
{
"id": "tchap",
@@ -37,6 +85,25 @@
"url": "https://www.tchap.gouv.fr/",
"tagline": "**Tchap** <br>la messagerie <br>instantanée du Secteur Public",
"homepageType": "email",
"entity": "Gouvernement"
"entity": "Gouvernement",
"enabled": true
},
{
"id": "webconf",
"name": "WebConférence de l'État",
"url": "https://webconf.numerique.gouv.fr",
"tagline": "**Webconférence** de lÉtat, <br>Audio, vidéo, chat, partage décran <br>et de documents",
"homepageType": "custom",
"entity": "Gouvernement",
"enabled": true
},
{
"id": "webinaire",
"name": "Webinaire de l'État",
"url": "https://webinaire.numerique.gouv.fr/welcome",
"tagline": "**Webinaire**. Vous organisez régulièrement <br>des séminaires, vous êtes agent de lÉtat, <br>créez un compte pour organiser <br>et conserver vos séminaires.",
"homepageType": "custom",
"entity": "Gouvernement",
"enabled": true
}
]

View File

@@ -1,7 +1,7 @@
---
import services from "@/data/services.json"
import { Image } from "astro:assets"
const logos = import.meta.glob<{ default: ImageMetadata }>("/src/assets/logos/*.svg")
const logos = import.meta.glob<{ default: ImageMetadata }>("/src/assets/logos/*.{svg,png,jpg}")
---
<!doctype html>
@@ -133,6 +133,8 @@ const logos = import.meta.glob<{ default: ImageMetadata }>("/src/assets/logos/*.
.lasuite-Service-icon {
display: flex;
align-items: center;
width: 40px;
height: 40px;
}
.lasuite-Service-name {
@@ -179,30 +181,34 @@ const logos = import.meta.glob<{ default: ImageMetadata }>("/src/assets/logos/*.
<h1 class="fr-sr-only">Liste des services de La Suite numérique</h1>
<ul class="lasuite-Services-inner scrollbars">
{
services.map(({ id, name, url }, i) => (
<li>
<div class="lasuite-Services-item lasuite-Service fr-enlarge-link">
<div class="lasuite-Service-icon">
<Image
src={logos[`/src/assets/logos/${id}.svg`]()}
width="40"
height="40"
alt=""
loading="eager"
/>
</div>
<a
target="_parent"
class="lasuite-Service-name"
href={url}
id={`lasuite-service-${id}`}
{...((i === 0 && { autofocus: true }) || {})}
>
{name}
</a>
</div>
</li>
))
services
.filter(({ enabled }) => !!enabled)
.map(({ id, name, url }, i) => {
const logo =
logos[`/src/assets/logos/${id}.svg`] ||
logos[`/src/assets/logos/${id}.jpg`] ||
logos[`/src/assets/logos/${id}.png`]
return (
<li>
<div class="lasuite-Services-item lasuite-Service fr-enlarge-link">
<div class="lasuite-Service-icon">
{!!logo ? (
<Image src={logo()} width="40" height="40" alt="" loading="eager" />
) : null}
</div>
<a
target="_parent"
class="lasuite-Service-name"
href={url}
id={`lasuite-service-${id}`}
{...((i === 0 && { autofocus: true }) || {})}
>
{name}
</a>
</div>
</li>
)
})
}
</ul>
</div>