import React, { ReactNode } from 'react'; import classNames from 'classnames'; import { BaseProps } from '../_utils/props'; import Icon from '../icon'; export type ResultStatus = 'success' | 'error' | 'info' | 'warning' | 'loading'; const StatusIcon = Object.freeze({ success: 'check-fill', error: 'close-fill', info: 'info-fill', warning: 'warn-fill', loading: 'sync', }); export interface ResultProps extends React.PropsWithRef { title?: ReactNode; subtitle?: ReactNode; status?: ResultStatus; icon?: ReactNode; extra?: ReactNode; children?: ReactNode; } const Result = React.forwardRef((props: ResultProps, ref) => { const { prefixCls = 'ty-result', status = 'info', title, subtitle, icon, extra, className, style, children, } = props; const cls = classNames(prefixCls, className, `${prefixCls}_${status}`); const renderIcon = (): React.ReactElement => { return (
{'icon' in props ? ( icon ) : ( )}
); }; return (
{renderIcon()} {title &&
{title}
} {subtitle &&
{subtitle}
} {extra &&
{extra}
} {children &&
{children}
}
); }); export default Result;