import * as React from 'react'; import { StyleSheet, Text, Platform, ViewProps } from 'react-native'; import { black } from '../styles/themes/v2/colors'; export type IconProps = { name: string; color?: string; size: number; direction: 'rtl' | 'ltr'; allowFontScaling?: boolean; }; let MaterialCommunityIcons: React.ComponentType< React.ComponentProps< typeof import('react-native-vector-icons/MaterialCommunityIcons').default > & { color: string; 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/docs/guides/icons` ); 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 = black, size, direction, allowFontScaling, }: IconProps) => ( ); const styles = StyleSheet.create({ // eslint-disable-next-line react-native/no-color-literals icon: { backgroundColor: 'transparent', }, }); export default defaultIcon;