Get Started
Back-office
Figma
Organisation
Le compte Hotline@net-conception.fr possède 6 équipes :
- NC : Contient tous les fichiers concernant Net Conception.
- E-commerce
- Entreprises
- Organismes & Associations
- Mairies & Collectivités
- Immo & Habitats
Dans NC, vous trouverez le design system, qui doit être mis à jour au fur et à mesure des projets. La dernière version du design system doit être dupliquée pour chaque nouveau projet, puis rangée dans l'équipe appropriée.
Fichiers
Dans chaque fichier Figma, l'organisation des pages est la suivante :
- Thumbnail : Pour la couverture du fichier.
- Overview : Informations sur le projet et l'entreprise.
- Graphic Chart : Charte graphique de l'entreprise.
- UX : Organisation des éléments UX.
- Foundations : Les couleurs, typographies, breakpoints, icônes, etc.
- UI Components : Les différents composants du projet.
- Experimentation : Pour expérimenter différentes solutions.
- Wireframes : Wireframes finaux.
- Client Demo : Pour les démonstrations clients.
Variables
Les variables sont actuellement organisées en 2 niveaux : primitives et alias.
Les primitives contiennent les variables de base (couleurs, espacements, rayons, polices, etc.). Tout peut être utilisé via les primitives, sauf les couleurs. Ces dernières sont connectées au niveau des alias. Pour utiliser les couleurs, employez les styles, ce qui permet de modifier facilement les composants et tous les éléments connectés. Ces styles sont eux-mêmes liés aux variables. Grâce à ce système, seule la valeur des variables doit être modifiée au début d’un projet.
Composants
Les composants sont créés à l’intérieur de la page UI Components. Ils doivent tous être connectés aux styles. Chaque nouveau composant (sauf exception) devra ensuite être transféré dans le fichier du design system afin d’enrichir la bibliothèque.
Integration
Dossier NC Design System
Pour commencer l'intégration, veuillez télécharger le dossier NC-Design-System-default-V2. Ce dossier permet d'intégrer les maquettes Figma. L'arborescence est organisée comme suit :
Assets
fav : Contient les favicons.
icons : Contient les icônes.
img : Contient les images utilisées sur tout le site.
logos : Contient le logo principal et ses déclinaisons.
CSS
variables : Contient toutes les variables CSS.
components : Contient le CSS des composants.
main : Contient le CSS général et celui des différentes pages.
JS
components : Contient le JS des composants.
functions : Contient les fonctions spécifiques au site.
index
Chaque dossier ou fichier doit respecter la nomenclature en utilisant des tirets "-" pour les espaces. Pour le reste, veuillez prendre exemple sur les fichiers par défaut disponibles dans le dossier NC-Design-System-default-VX.
Configuration
Veuillez modifier toutes les valeurs nécessaires dans les fichiers CSS/variables en vous référant à la page Foundations dans le fichier Figma du projet.
En vous référant toujours au fichier Figma, ajoutez le CSS et le JS des composants utilisés dans les fichiers CSS/components.css et JS/components.js. Vous pouvez copier/coller les composants existants depuis le site NC Design System ou les créer s'ils n'existent pas encore. Pensez à ajouter les nouveaux composants au Design System pour enrichir la librairie.
FTP
Une fois l'intégration effectuée en local, ajoutez le dossier dans le FTP concerné. Vous trouverez les différents accès ici.
Maintenance
OneDrive
Welcome
Components
calendar
chips
links
link_contextual
Bonnes pratiques essentielles
Ajoutez un attribut aria-label si l'élément n'a pas de texte visible (comme une icône) ou si le texte visible n'est pas suffisamment clair pour décrire sa fonction.
Exemple : Un bouton avec une loupe en guise d’icône pourrait avoir :
<button aria-label="Rechercher">
<svg aria-hidden="true" focusable="false">...</svg>
</button>
Pour un lien externe, ajoutez une icône spécifique (comme icon-new-tab.png) pour indiquer qu’il s’ouvre dans un nouvel onglet et précisez cet aspect avec aria-label.
Exemple :
<a href="https://exemple.com" aria-label="Ouvre un nouvel onglet">
Exemple externe <img src="icon-new-tab.png" alt="">
</a>
Pour les liens vers des fichiers (ex. : PDF), indiquez clairement le type de fichier soit avec une icône associée, soit en l’intégrant dans le texte du lien.
Exemple avec texte :
<a href="document.pdf">Télécharger le document (.pdf)</a>
Exemple avec icône :
<a href="document.pdf">
Télécharger le document <img src="icon-pdf.png" alt="">
</a>
link_contextual_0
a.link_contextual_0 {
text-decoration: underline;
text-underline-offset: 2px;
transition: 0.2s ease-out;
color: var(--link-default);
}
a.link_contextual_0:hover {
color: var(--link-default-hover);
text-decoration: none;
}
a.link_contextual_0:active {
color: var(--link-default-active);
text-decoration: underline;
}
a.link_contextual_0:focus-visible {
color: var(--link-default-active);
text-decoration: underline;
}
a.link_contextual_0:focus-visible {
outline: 2px dashed var(--link-default-active);
outline-offset: 2px;
border-radius: var(--radii-2);
}
/*link_contextual_0 - visited*/
a.link_contextual_0:visited {
color: var(--link-visited);
}
a.link_contextual_0:hover:visited {
color: var(--link-visited-hover);
}
a.link_contextual_0:active:visited {
color: var(--link-visited-active);
}
a.link_contextual_0:focus-visible:visited {
outline: 2px dashed var(--link-visited-active);
}
link_contextual_1
.link_contextual_1 {
display: inline-block;
color: var(--link-default);
padding: 0rem 0.125rem;
border-radius: var(--radii-4);
transition: color 0.3s ease, background-color 0.3s ease, transform 0.2s ease;
}
.link_contextual_1:hover {
color: var(--link-default);
background-color: var(--link-default-bg);
transform: scale(1.02);
}
.link_contextual_1:active {
color: var(--link-default-active);
background-color: var(--link-default-bg);
transform: scale(0.98);
}
.link_contextual_1:focus-visible {
outline: 2px dashed var(--link-default-active);
outline-offset: 2px;
}
/*link_contextual_1 - visited*/
.link_contextual_1:visited {
color: var(--link-visited);
}
.link_contextual_1:hover:visited {
color: var(--link-visited);
background-color: var(--link-visited-bg);
}
.link_contextual_1:active:visited {
color: var(--link-visited-active);
background-color: var(--link-visited-bg);
}
.link_contextual_1:focus-visible:visited {
outline: 2px dashed var(--link-visited-active);
}
link_contextual_2
.link_contextual_2 {
display: inline-block;
color: var(--link-default);
padding: 2px;
transition: color ease 0.3s;
}
.link_contextual_2:after {
content: '';
position: absolute;
z-index: -1;
width: 100%;
height: 5%;
left: 0;
bottom: 0;
border-radius: var(--radii-2);
background-color: var(--link-default);
transition: all ease 0.3s;
}
.link_contextual_2:hover {
color: var(--neutral-tint-4);
}
.link_contextual_2:hover:after {
height: 100%;
}
.link_contextual_2:active {
color: var(--neutral-tint-5);
}
.link_contextual_2:active:after {
background-color: var(--link-default-active);
}
.link_contextual_2:focus-visible {
outline: 2px dashed var(--link-default-hover);
outline-offset: 2px;
border-radius: var(--radii-2);
}
/*link_contextual_2 - visited*/
.link_contextual_2:visited {
color: var(--link-visited);
}
.link_contextual_2:hover:visited {
color: var(--neutral-tint-4);
}
.link_contextual_2:after:visited {
background-color: var(--link-visited);
}
.link_contextual_2:active:after:visited {
background-color: var(--link-visited-active);
}
.link_contextual_2:focus-visible:visited {
outline: 2px dashed var(--link-visited-hover);
}
link_contextual_3
.link_contextual_3 {
color: var(--link-default);
}
.link_contextual_3::before {
content: '';
position: absolute;
width: 100%;
height: 2px;
border-radius: 4px;
background-color: var(--link-default-hover);
bottom: -2;
left: 0;
transform-origin: right;
transform: scaleX(0);
transition: transform .3s ease-in-out;
}
.link_contextual_3:hover {
color: var(--link-default-hover);
}
.link_contextual_3:hover::before {
transform-origin: left;
transform: scaleX(1);
}
.link_contextual_3:active {
color: var(--link-default-active);
}
.link_contextual_3:active::before {
background-color: var(--link-default-active);
}
.link_contextual_3:focus-visible {
outline: 2px dashed var(--link-default-hover);
outline-offset: 2px;
border-radius: var(--radii-2);
}
/*link_contextual_3 - visited*/
.link_contextual_3 {
color: var(--link-visited);
}
.link_contextual_3::before {
background-color: var(--link-visited-hover);
}
.link_contextual_3:hover {
color: var(--link-visited-hover);
}
.link_contextual_3:active {
color: var(--link-visited-active);
}
.link_contextual_3:active::before {
background-color: var(--link-visited-active);
}
.link_contextual_3:focus-visible:visited {
outline: 2px dashed var(--link-visited-hover);
}
link_contextual_4
.link_contextual_4 {
overflow: hidden;
color: var(--link-default);
}
.link_contextual_4:after {
content: "";
background: var(--link-default-bg);
position: absolute;
left: 12px;
bottom: -2px;
width: calc(100% - 8px);
height: calc(100% - 12px);
z-index: -1;
transition: 0.3s cubic-bezier(0.3, 0.1, 0, 2.0);
}
.link_contextual_4:hover:after {
left: 0;
bottom: -2px;
width: 100%;
height: 100%;
}
.link_contextual_4:active:after {
left: -6px;
bottom: 12px;
height: calc(100% - 12px);
}
.link_contextual_4:focus-visible {
outline: 2px dashed var(--link-default-hover);
outline-offset: 2px;
border-radius: var(--radii-2);
}
/*link_contextual_4 - visited*/
.link_contextual_4:visited {
color: var(--link-visited);
}
.link_contextual_4:visited:after {
background: var(--link-visited-bg);
}
.link_contextual_4:focus-visible:visited {
outline: 2px dashed var(--link-visited-hover);
}
link_contextual_5
.link_contextual_5 {
color: var(--link-default);
position: relative;
}
.link_contextual_5:before {
position: absolute;
margin: 0 auto;
bottom: -2px;
left: 0;
width: 100%;
height: 2px;
background-color: var(--link-default-bg);
content: '';
transform: scaleX(.9);
transition-duration: .3s;
}
.link_contextual_5:hover:before {
background-color: var(--link-default);
transform: scaleX(1);
}
.link_contextual_5:active {
color: var(--link-default-active);
position: relative;
}
.link_contextual_5:active:before {
background-color: var(--link-default-active);
transform: scaleX(.5);
}
.link_contextual_5:focus-visible {
outline: 2px dashed var(--link-default-hover);
outline-offset: 2px;
border-radius: var(--radii-2);
}
/*link_contextual_5 - default*/
.link_contextual_5:visited {
color: var(--link-visited);
}
.link_contextual_5:before:visited {
background-color: var(--link-visited-bg);
}
.link_contextual_5:hover:before:visited {
background-color: var(--link-visited);
}
.link_contextual_5:active:visited {
color: var(--link-visited-active);
}
.link_contextual_5:active:before:visited {
background-color: var(--link-visited-active);
}
.link_contextual_5:focus-visible:visited {
outline: 2px dashed var(--link-visited-hover);
}
link_contextual_6
a.link_contextual_6 {
text-decoration: underline;
text-underline-offset: 2px;
transition: 0.2s ease-out;
color: var(--link-default);
}
a.link_contextual_6:hover {
color: var(--link-default-hover);
text-underline-offset: 4px;
}
a.link_contextual_6:active {
color: var(--link-default-active);
}
.link_contextual_6:focus-visible {
outline: 2px dashed var(--link-default-hover);
outline-offset: 2px;
border-radius: var(--radii-2);
}
/*link_contextual_6 - visited*/
a.link_contextual_6:visited {
color: var(--link-visited);
}
a.link_contextual_6:hover:visited {
color: var(--link-visited-hover);
}
a.link_contextual_6:active:visited {
color: var(--link-visited-active);
}
.link_contextual_6:focus-visible:visited {
outline: 2px dashed var(--link-default-hover);
}