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);