A React Native app for the ultimate thinking partner.
at bf2a37bf805fa5ccc8b5badeeb098f842186e615 60 lines 1.3 kB view raw
1import React from 'react'; 2import { View, StyleSheet, ActivityIndicator } from 'react-native'; 3 4interface LogoLoaderProps { 5 // Pass a require('...') or an imported JSON 6 source?: any; 7 loop?: boolean; 8 autoPlay?: boolean; 9 size?: number; // square size in px 10} 11 12const LogoLoader: React.FC<LogoLoaderProps> = ({ 13 source, 14 loop = true, 15 autoPlay = true, 16 size = 160, 17}) => { 18 // If Lottie is not available or source not provided, use ActivityIndicator 19 if (!source) { 20 return ( 21 <View style={styles.container}> 22 <ActivityIndicator size="large" color="#ffffff" /> 23 </View> 24 ); 25 } 26 27 // Dynamically import LottieView only if needed 28 let LottieView: any; 29 try { 30 LottieView = require('lottie-react-native').default; 31 } catch (e) { 32 // Fallback to ActivityIndicator if Lottie is not available 33 return ( 34 <View style={styles.container}> 35 <ActivityIndicator size="large" color="#ffffff" /> 36 </View> 37 ); 38 } 39 40 return ( 41 <View style={styles.container}> 42 <LottieView 43 source={source} 44 autoPlay={autoPlay} 45 loop={loop} 46 style={{ width: size, height: size }} 47 /> 48 </View> 49 ); 50}; 51 52const styles = StyleSheet.create({ 53 container: { 54 flex: 1, 55 justifyContent: 'center', 56 alignItems: 'center', 57 }, 58}); 59 60export default LogoLoader;