Skip to main content

Personnalisation

La personnalisation du branding de l'application, incluant le nom, les images et les couleurs, est centralisée dans un fichier unique : frontend/public/branding/theme.yaml.

1. Où configurer le branding ?

Le fichier principal pour la configuration du branding est :

frontend/public/branding/theme.yaml

Dans ce fichier, vous pouvez définir :

  • Le nom de l'application (appName)
  • Les couleurs principales (colors)
  • Les images de branding (images)

Exemple de configuration :

appName: "OchoCast"

colors:
primary: "#1dac78" # Couleur principale (boutons, liens, accents)
secondary: "#344054" # Couleur secondaire (textes, bordures)
background: "#f9fafb" # Couleur de fond
accent: "#2ecc71" # Couleur d'accent (alertes, highlights)
error: "#dc2626" # Couleur d'erreur (messages d'erreur)

images:
logo: "::default::ochoIconFull.svg"
default_miniature_image: "::default::exemple/image_tuile_event.png"
add: "::default::add.svg"
plus: "::default::plus.svg"
search: "::default::search.svg"
cross: "::default::cross.svg"
user_placeholder: "::default::persona.png"

2. Typage et validation

Le schéma de ce fichier YAML est défini dans :

frontend/src/branding/types.ts

L'interface BrandingConfig garantit que les propriétés du fichier sont bien typées et validées dans le code TypeScript.

3. Génération automatique des couleurs

Le système de branding simplifie la gestion des couleurs en générant automatiquement des variantes. À partir de 4-5 couleurs de base, il produit plus de 50 variantes pour toute l'application.

Fonctionnement :

  • Couleurs claires (50-400) : Mélange progressif avec du blanc
  • Couleur de base (500) : Couleur exacte définie dans le fichier
  • Couleurs foncées (600-900) : Mélange progressif avec du noir

Ces variantes sont générées par la fonction generateColorVariants dans :

frontend/src/utils/colorUtils.ts

Variables CSS générées :

Pour chaque couleur de base, le système crée des variables CSS :

  • --theme-color, --theme-color-50 à --theme-color-900
  • --bg-color, --bg-color-50 à --bg-color-900
  • --accent-color, --accent-color-50 à --accent-color-900
  • --error-color, --error-color-50 à --error-color-900

4. Utilisation dans les composants

Hook useBranding

Le hook useBranding est défini dans :

frontend/src/hooks/useBranding.ts

Il permet de :

  • Charger le fichier theme.yaml
  • Générer les variantes de couleurs via generateColorVariants
  • Injecter dynamiquement les variables CSS dans le DOM
  • Retourner la configuration pour une utilisation dans les composants React

Composant ColorPreview

Le composant ColorPreview est utilisé pour afficher les variantes de couleurs générées. Il est défini dans :

frontend/src/components/ReworkComponents/generic/ColorPreview/ColorPreview.tsx

5. Panneau d'administration

Le panneau d'administration permet de modifier le branding en temps réel. Il est accessible à l'URL : /admin (droits administrateur requis).

Fonctionnalités :

  • Modifier le nom de l'application
  • Changer les couleurs principales
  • Prévisualiser les dégradés en temps réel
  • Modifier les images de branding
  • Sauvegarder la configuration sur le serveur

Le fichier correspondant est :

frontend/src/pages/adminPanel/adminPanel.tsx

6. Résumé

  • 4-5 couleurs définies50+ variables CSS générées automatiquement
  • Système de dégradés automatiques (variantes 50-900)
  • Panneau d'administration pour modification en temps réel
  • Tout le branding centralisé dans theme.yaml
  • Architecture modulaire et typée avec TypeScript
  • Rechargement automatique après sauvegarde pour appliquer les changements