Personnalisation
Adaptez l'apparence de Mini-Zoe à votre charte graphique et à vos besoins.
Personnalisation des couleurs
Couleur de bordure
Changez la couleur de la bordure du cercle avec borderColor :
<MiniZoe borderColor="#667eea" />
Exemples de palettes :
// Palette moderne
<MiniZoe borderColor="#667eea" backgroundColor="#f0f0ff" />
// Palette nature
<MiniZoe borderColor="#43e97b" backgroundColor="#e8f5e9" />
// Palette sunset
<MiniZoe borderColor="#fa709a" backgroundColor="#fff0f3" />
// Palette dark
<MiniZoe borderColor="#00d4ff" backgroundColor="#1a1a2e" />
Couleur de fond
Modifiez la couleur de fond du cercle avec backgroundColor :
<MiniZoe backgroundColor="#E8F5E9" />
Assurez-vous que la couleur de fond et la couleur de bordure ont un bon contraste pour une meilleure visibilité.
Image personnalisée
Remplacez le logo par défaut par votre propre image :
<MiniZoe customImage={require('./assets/custom-assistant.png')} />
Recommandations pour l'image
- Format : PNG avec transparence
- Dimensions : 200x200 pixels minimum
- Poids : < 50 KB pour de meilleures performances
- Style : Simple et reconnaissable
Exemple avec image locale :
import customAvatar from './assets/avatar.png';
<MiniZoe customImage={customAvatar} />
Exemple avec image depuis une URL :
<MiniZoe
customImage={{ uri: 'https://example.com/avatar.png' }}
/>
Positionnement
Position verticale
Ajustez la distance depuis le bas de l'écran :
<MiniZoe bottomOffset={40} />
Cas d'usage :
- Navigation tab bar : Augmentez
bottomOffsetpour éviter la superposition - Floating action button : Ajustez pour éviter les conflits
- Keyboard : Gérez la position quand le clavier est visible
Position horizontale
Modifiez la distance depuis la droite :
<MiniZoe rightOffset={30} />
Position à gauche :
Pour positionner Mini-Zoe à gauche, vous devrez utiliser un style personnalisé (voir section avancée).
Exemples de personnalisation
Style Material Design
<MiniZoe
borderColor="#6200ea"
backgroundColor="#f3e5f5"
bottomOffset={24}
rightOffset={24}
customImage={require('./assets/material-assistant.png')}
/>
Style iOS
<MiniZoe
borderColor="#007AFF"
backgroundColor="#E5F1FF"
bottomOffset={32}
rightOffset={20}
customImage={require('./assets/ios-assistant.png')}
/>
Style Dark Mode
import { useColorScheme } from 'react-native';
function App() {
const isDark = useColorScheme() === 'dark';
return (
<MiniZoe
borderColor={isDark ? "#00d4ff" : "#667eea"}
backgroundColor={isDark ? "#1a1a2e" : "#f0f0ff"}
customImage={
isDark
? require('./assets/assistant-dark.png')
: require('./assets/assistant-light.png')
}
/>
);
}
Style adaptatif selon la plateforme
import { Platform } from 'react-native';
<MiniZoe
borderColor={Platform.select({
ios: '#007AFF',
android: '#6200ea',
default: '#667eea'
})}
backgroundColor={Platform.select({
ios: '#E5F1FF',
android: '#f3e5f5',
default: '#f0f0ff'
})}
bottomOffset={Platform.select({
ios: 32,
android: 24,
default: 20
})}
/>
Thèmes prédéfinis
Créez vos propres thèmes réutilisables :
// themes.js
export const miniZoeThemes = {
default: {
borderColor: '#FFD700',
backgroundColor: '#FFF9E6',
bottomOffset: 20,
rightOffset: 20
},
modern: {
borderColor: '#667eea',
backgroundColor: '#f0f0ff',
bottomOffset: 24,
rightOffset: 24
},
nature: {
borderColor: '#43e97b',
backgroundColor: '#e8f5e9',
bottomOffset: 20,
rightOffset: 20
},
sunset: {
borderColor: '#fa709a',
backgroundColor: '#fff0f3',
bottomOffset: 20,
rightOffset: 20
}
};
// App.js
import { miniZoeThemes } from './themes';
<MiniZoe {...miniZoeThemes.modern} />
Responsive Design
Adaptez Mini-Zoe selon la taille de l'écran :
import { Dimensions } from 'react-native';
function App() {
const { width, height } = Dimensions.get('window');
const isSmallScreen = width < 375;
return (
<MiniZoe
bottomOffset={isSmallScreen ? 16 : 24}
rightOffset={isSmallScreen ? 16 : 24}
/>
);
}
Personnalisation par contexte
Selon la page
import { useRoute } from '@react-navigation/native';
function App() {
const route = useRoute();
const getThemeForRoute = (routeName) => {
switch(routeName) {
case 'Home':
return { borderColor: '#667eea', backgroundColor: '#f0f0ff' };
case 'Profile':
return { borderColor: '#43e97b', backgroundColor: '#e8f5e9' };
case 'Settings':
return { borderColor: '#fa709a', backgroundColor: '#fff0f3' };
default:
return { borderColor: '#FFD700', backgroundColor: '#FFF9E6' };
}
};
const theme = getThemeForRoute(route.name);
return <MiniZoe {...theme} />;
}
Selon l'état de l'app
function App() {
const [isLoading, setIsLoading] = useState(false);
const [hasError, setHasError] = useState(false);
const borderColor = hasError ? '#ff4444' : isLoading ? '#ffaa00' : '#667eea';
const backgroundColor = hasError ? '#ffe5e5' : isLoading ? '#fff8e5' : '#f0f0ff';
return (
<MiniZoe
borderColor={borderColor}
backgroundColor={backgroundColor}
/>
);
}
Bonnes pratiques
À faire
- Testez sur différents appareils et tailles d'écran
- Assurez un bon contraste entre bordure et fond
- Gardez l'image simple et reconnaissable
- Adaptez le positionnement selon votre UI
À éviter
- Images trop détaillées ou complexes
- Couleurs trop similaires (mauvais contraste)
- Positionnement qui masque du contenu important
- Oublier de tester en dark mode
Accessibilité
Assurez-vous que votre personnalisation reste accessible :
// ✅ Bon contraste
<MiniZoe borderColor="#0066cc" backgroundColor="#e6f2ff" />
// ❌ Mauvais contraste
<MiniZoe borderColor="#cccccc" backgroundColor="#dddddd" />
Prochaines étapes
- Référence des props - Documentation complète des props
- Text-to-Speech - Configuration TTS
- Guide d'utilisation - Exemples pratiques