import * as React from 'react'; import { Platform, StyleSheet, Text, TextProps, ViewProps } from 'react-native'; export type IconProps = { name: string; color: string; size: number; direction: 'rtl' | 'ltr'; allowFontScaling?: boolean; }; let MaterialCommunityIcons: React.ComponentType< TextProps & { name: string; color: string; size: number; pointerEvents?: ViewProps['pointerEvents']; } >; try { // Optionally require vector-icons MaterialCommunityIcons = require('react-native-vector-icons/MaterialCommunityIcons').default; } catch (e) { let isErrorLogged = false; // Fallback component for icons MaterialCommunityIcons = ({ name, color, size, ...rest }) => { /* eslint-disable no-console */ if (!isErrorLogged) { if ( !/(Cannot find module|Module not found|Cannot resolve module)/.test( (e as any).message ) ) { console.error(e); } console.warn( `Tried to use the icon '${name}' in a component from 'react-native-paper', but 'react-native-vector-icons/MaterialCommunityIcons' could not be loaded.`, `To remove this warning, try installing 'react-native-vector-icons' or use another method to specify icon: https://callstack.github.io/react-native-paper/icons.html.` ); isErrorLogged = true; } return ( ); }; } export const accessibilityProps = Platform.OS === 'web' ? { role: 'img', focusable: false, } : { accessibilityElementsHidden: true, importantForAccessibility: 'no-hide-descendants' as 'no-hide-descendants', }; const defaultIcon = ({ name, color, size, direction, allowFontScaling, }: IconProps) => ( ); const styles = StyleSheet.create({ icon: { backgroundColor: 'transparent', }, }); export default defaultIcon;