import { CrossOutline, SuccessOutline, WarningOutline, } from '@fruits-chain/icons-react-native'; import React, { memo } from 'react'; import { View } from 'react-native'; import { renderTextLikeJSX } from '../helpers'; import Space from '../space'; import Theme from '../theme'; import type { ResultProps, ResultStatus } from './interface'; import { varCreator, styleCreator } from './style'; const renderStatusIcon = (status: ResultStatus, size: number) => { const props = { size, color: '#fff', }; switch (status) { case 'success': return ; case 'warning': case 'info': return ; case 'error': return ; default: return null; } }; /** * Result结果 * @description 用于反馈一系列操作任务的处理结果。 */ const Result: React.FC = ({ subtitleTextStyle, titleTextStyle, title, subtitle, extra, renderIcon, status, layout, ...restProps }) => { const TOKENS = Theme.useThemeTokens(); const CV = Theme.createVar(TOKENS, varCreator); // @ts-ignore const STYLES = Theme.createStyle(CV, styleCreator); // @ts-ignore const color = CV[`result_${status}_color`]; const iconSize = (CV.result_icon_size / 4) * 3; const iconJSX = renderIcon ? ( renderIcon(color, iconSize) ) : ( {renderStatusIcon(status, iconSize)} ); const titleJSX = renderTextLikeJSX(title, [STYLES.titleText, titleTextStyle]); const subtitleJSX = renderTextLikeJSX(subtitle, [ STYLES.subtitleText, subtitleTextStyle, ]); return ( {layout === 'vertical' ? iconJSX : null} {layout === 'vertical' ? ( titleJSX ) : ( {iconJSX} {titleJSX} )} {subtitleJSX} {extra} ); }; export default memo(Result);