# Configuration du Provider Le ''Provider'' de SmartCommon accepte un objet de configuration qui permet de personnaliser le comportement de l'application. ## Configuration de base ``` // src/App.jsx import { Provider } from '@cap-rel/smartcommon'; import "@cap-rel/smartcommon/dist/smartcommon-style.css"; const config = { debug: true, api: { prefixUrl: import.meta.env.VITE_API_URL, timeout: 30000 } }; export const App = () => ( {/* Votre application */} ); ``` ## Configuration complète Voici toutes les options disponibles : ``` const config = { // Mode debug - active les logs dans la console debug: true, // Configuration des composants components: { // Thème actif theme: "default", // Définition des thèmes personnalisés themes: { default: { /* ... */ }, dark: { /* ... */ } }, // Variants personnalisés pour les composants variants: { Button: { primary: { className: "bg-blue-500 text-white" }, secondary: { className: "bg-gray-500 text-white" } } }, // Configuration TailwindCSS tailwindCss: { mergedClass: {} } }, // Configuration i18n i18n: { translated: true }, // Configuration du stockage storage: { db: { compression: {} }, local: { compression: {} }, session: { compression: {} } }, // Configuration de l'état global globalState: { reducers: {} }, // Configuration API api: { // URL de base de l'API prefixUrl: "https://api.example.com", // Timeout des requêtes (ms) timeout: 30000, // Mode debug pour les requêtes API debug: true, // Mapping de chemins personnalisés paths: { login: "auth/login", logout: "auth/logout" }, // Gestion d'erreurs personnalisée errors: { 401: (error) => console.log("Non autorisé"), 500: (error) => console.log("Erreur serveur") } }, // Configuration des animations de pages pages: { "/": { "/dashboard": "slideLeft", "/settings": "slideLeft", "*": "fade" }, "/dashboard": { "/": "slideRight", "*": "fade" }, "*": "fade" } }; ``` ## Options détaillées ### debug Active les logs de debug dans la console pour tous les hooks et composants. ``` debug: true // Active tous les logs debug: false // Désactive les logs (production) ``` ### api Configuration du client HTTP (ky). ^ Option ^ Type ^ Description ^ | ''prefixUrl'' | string | URL de base pour toutes les requêtes | | ''timeout'' | number | Timeout en millisecondes (défaut: 30000) | | ''debug'' | boolean | Active les logs des requêtes API | | ''paths'' | object | Mapping de chemins personnalisés | | ''errors'' | object | Handlers d'erreurs par code HTTP | ### pages Configuration des animations de transition entre pages. Voir [[animations|Animations]] pour plus de détails. ^ Animation ^ Description ^ | ''fade'' | Fondu enchaîné | | ''slideLeft'' | Glissement vers la gauche | | ''slideRight'' | Glissement vers la droite | | ''zoom'' | Effet de zoom | ### components Personnalisation des composants SmartCommon. #### themes Définition de thèmes personnalisés : ``` themes: { light: { primary: "#3b82f6", secondary: "#6b7280", background: "#ffffff" }, dark: { primary: "#60a5fa", secondary: "#9ca3af", background: "#1f2937" } } ``` #### variants Variants personnalisés pour les composants : ``` variants: { Button: { primary: { className: "bg-primary text-white hover:bg-primary/90" }, danger: { className: "bg-red-500 text-white hover:bg-red-600" } }, Input: { outlined: { className: "border-2 border-gray-300 rounded-lg" } } } ``` ### storage Configuration du stockage (localStorage, sessionStorage, IndexedDB). ``` storage: { db: { compression: { enabled: true, threshold: 1024 // Compresser si > 1KB } }, local: { compression: { enabled: false } } } ``` ### globalState Configuration de l'état global Redux. ``` globalState: { reducers: { // Reducers personnalisés à ajouter au store myCustomReducer: myReducerFunction } } ``` ## Accéder à la configuration Utilisez le hook ''useLibConfig'' pour accéder à la configuration : ``` import { useLibConfig } from '@cap-rel/smartcommon'; const MyComponent = () => { const config = useLibConfig(); console.log(config.debug); console.log(config.api.prefixUrl); return (/* ... */); }; ``` ## Exemple complet ``` // src/App.jsx import { Provider } from '@cap-rel/smartcommon'; import "@cap-rel/smartcommon/dist/smartcommon-style.css"; import { Router } from './components/app/Router'; const config = { debug: import.meta.env.DEV, api: { prefixUrl: import.meta.env.VITE_API_URL, timeout: 30000, debug: import.meta.env.DEV }, pages: { "/login": { "*": "fade" }, "*": { "/login": "fade", "*": "slideLeft" } } }; export const App = () => ( ); ``` ## Voir aussi * [[hooks|Hooks]] - Documentation des hooks * [[animations|Animations]] - Animations de pages * [[astuces|Astuces]] - Bonnes pratiques