Introduction

Welcome

Bienvenue dans le Design System (DS).

Cette interface rassemble tous les composants du projet (aspect graphique et mise en oeuvre technique).
En plus d'être une documentation à jour et évolutive, elle va faciliter le travail des concepteurs, graphistes, UX, webmasters et développeurs.
Cette interface est organisée via les sections accessibles via le menu latéral.
Tout d'abord, cette entrée permet de configurer l'interface (lab) :

  • Configuration (préférences couleur/alignement de l'interface)

Ensuite arrive les élements de la structure de base :

  • Bases
  • Atomes
  • Molécules
  • Organismes

Et enfin les éléments spécifiques à un contexte (GC dans notre cas) :

  • GC Composants
  • GC Layout & Pages

Cette interface se base sur le framework bootstrap mais il est possible de n'utiliser que les fragments nécessaire au projet (en css et en js).
L'objectif est de customiser l'ensemble pour obtenir un design guideline spécifique à la charte souhaitée tout en conservant une logique modulaire.
Afin de simuler certains comportements, l'interface utilise jquery et certains éléments js de la librairie de bootstrap mais chaque projet utilisera la technique qui lui est propre pour obtenir des résultats simiulaires.

A propos
Vue d'ensemble

La philosophie générale est de mutualiser et rationaliser au maximum les éléments afin de les rendre réutilisables.
Cela évite d'avoir à réinventer le moindre élément de base du projet mais plutôt de le construire à partir des éléments basiques définis dans le site (colors, sizes, etc...).

Arborescence = 2 dossiers principaux :

  • src (fichiers scss sources non compilés du projet)
  • www (site déployé dans le projet avec des fichiers php, css, js, fonts, etc...)
SCSS vers CSS

Le fichier css final et unique (base.css) est compilé à partir du fichier 'src/scss/base.scss'. En l'ouvrant, vous pouvez voir les sous fichiers qui la composent. Concernant les variables, elles sont toutes regroupées dans le fichier 'variables.scss'. La plupart des caractéristiques (couleurs, tailles, etc...) sont construites à partir de variables contenues dans ce fichier. Les fichiers issus de la librairie boostrap sont dans le dossier 'bootstrap', les autres dans le dossier 'base'.
En fonction du projet, "base" est à remplacer par le nom du projet ("gc" par exemple).

PHP

Le langage PHP est utilisé ici uniquement pour pouvoir faire des includes, des boucles d'affichage et des passages de variables.
Un fichier config.json permet de piloter les caractéristiques principales du projet (arborescence, status, theme, etc...). Chaque page finale commence par une variable 'page' qui permet d'indiquer certains comportements depuis le fichier de configuration.

Techniques
BOOTSTRAP 5.2

Bootstrap est un framework front (HTML / CSS / JS) fournissant aux développeurs des outils pour créer et harmoniser les éléments, le tout dans un cadre responsive. Il fournit tout un tas d'outils déjà en place qu'il faudra simplement adapter en fonction de nos besoins.
Il est assez complet et prend en charge certains critères d'accessibilité.

Rappel : Nous ne sommes pas obligés de conserver ce framework.
Il est possible de le customiser sur mesure et de ne garder que le nécessaire au contexte (en css et en js). Nous utiliseons la version 5.2.3.

Pour en savoir plus : https://getbootstrap.com/docs/5.2

SASS

SASS est un préprocesseur pour générer du CSS. Il permet d'utiliser des variables, des fonctions et des imbrications.
L’objet de SASS est une plus grande efficacité de l’écriture de code CSS. Il existe de nombreuses formations sur le web pour les plus curieux d'entre vous.

GULP

GULP est est un "task runner", c'est à dire un automatiseur de taches. Il s'occupe de lancer des tas de scripts automatiquement.
Dans notre cas, il permet de convertir les fichiers scss en css ou encore de générer une font/sprite avec les pictos svg.
Nous utilisons la version 4.

Pour en savoir plus : https://gulpjs.com/

BEM

BEM est une abréviation de 'Block, Element, Modifier'. Concrètement, c'est une façon de nommer les classes en CSS à partir d'une convention.
L'idée est de normaliser les classes à pour les éléments du DOM. Nous pourrons pointer ces derniers sans impacter les autres avec une syntaxe logique.

Convention : Nommer les classes uniquement avec des minuscules et des tirets "-" car bootstrap en fait de même et il serait sage d'être ISO sur l'ensemble du projet.

Pour en savoir plus : http://getbem.com/

Configuration
config.json
...
"sections": [
        {
            "id":               "section0",
            "label":            "Configuration",
            "svg":              "swatchbook",
            "pages": []
        },
        {
            "id":               "section1",
            "label":            "Bases",
            "svg":              "diamond1",
            "pages": [
                {
                    "id":               "lab1-introduction",
                    "label":            "Introduction",
                    "url":              "lab1-introduction.php",
                    "status":           "ko",
                    "projet":           "base"
                },
                {
                    "id":               "lab1-colors",
                    "label":            "Colors",
                    "url":              "lab1-colors.php",
                    "status":           "ko",
                    "projet":           "base"
                },
...
base.scss
@import "bootstrap5/mixins/banner";
@include bsBanner("");

@import
    "base/base",
    "base/font",
    "base/responsive",
    "base/unit",

    "bootstrap5/functions",
    "bootstrap5/variables",
    "bootstrap5/maps",
    "bootstrap5/mixins",
    "bootstrap5/utilities",

    "base/heading",

    "bootstrap5/root",
    "bootstrap5/reboot",
    "bootstrap5/type",
    "bootstrap5/images",
    "bootstrap5/containers",
    "bootstrap5/grid",
    "bootstrap5/tables",
    "bootstrap5/forms",
    "bootstrap5/buttons",
    "bootstrap5/transitions",
    "bootstrap5/dropdown",
    "bootstrap5/button-group",
    "bootstrap5/nav",
    "bootstrap5/navbar",
    "bootstrap5/card",
    "bootstrap5/accordion",
    "bootstrap5/breadcrumb",
    "bootstrap5/pagination",
    "bootstrap5/badge",
    "bootstrap5/alert",
    "bootstrap5/progress",
    "bootstrap5/list-group",
    "bootstrap5/close",
    "bootstrap5/toasts",
    "bootstrap5/modal",
    "bootstrap5/tooltip",
    "bootstrap5/popover",
    "bootstrap5/carousel",
    "bootstrap5/spinners",
    "bootstrap5/offcanvas",
    "bootstrap5/placeholders",

    "bootstrap5/helpers",

    "bootstrap5/utilities/api",

    "base/tools",
    "base/logo",
    "base/svg",
    "base/form-custom",
    "base/rate",
    "base/hero",
    "base/stepper",
    "base/sticky",

    // Plugins
    "plugins/optiscroll",
    "plugins/owl.carousel"
;

Les datas ci-dessus sont indicatives et faites "à date".

Configuration
Thème
Bases
Atomes
Molécules
Organismes
Projet GC
Projet KIOSQUE