import * as React from 'react'; import { Image, ImageSourcePropType, StyleSheet, View, ViewStyle, StyleProp, } from 'react-native'; import { withTheme } from '../../core/theming'; const defaultSize = 64; export type AvatarImageSource = | ImageSourcePropType | ((props: { size: number }) => React.ReactNode); type Props = React.ComponentPropsWithRef & { /** * Image to display for the `Avatar`. * It accepts a standard React Native Image `source` prop * Or a function that returns an `Image`. */ source: AvatarImageSource; /** * Size of the avatar. */ size?: number; style?: StyleProp; /** * @optional */ theme: ReactNativePaper.Theme; }; /** * Avatars can be used to represent people in a graphical way. * *
*
* *
*
* * ## Usage * ```js * import * as React from 'react'; * import { Avatar } from 'react-native-paper'; * * const MyComponent = () => ( * * ); * export default MyComponent * ``` */ const AvatarImage = ({ size = defaultSize, source, style, theme, ...rest }: Props) => { const { colors } = theme; const { backgroundColor = colors.primary } = StyleSheet.flatten(style) || {}; return ( {typeof source === 'function' && source({ size })} {typeof source !== 'function' && ( )} ); }; AvatarImage.displayName = 'Avatar.Image'; export default withTheme(AvatarImage);