import { SparkCheckCircleFill, SparkCheckCircleLine, SparkErrorCircleFill, SparkErrorCircleLine, SparkStopCircleFill, SparkStopCircleLine, SparkTrueLine, SparkWarningCircleFill, SparkWarningCircleLine } from '@agentscope-ai/icons';
import { useProviderContext } from '../Provider';
import Style from './style';
import classNames from 'classnames';
import { ButtonProps } from 'antd';
import { Button } from '@agentscope-ai/design';
export interface IStatusCardProps {
/**
* @description 标题
* @descriptionEn Title
*/
title: string | React.ReactNode;
/**
* @description 状态
* @descriptionEn Status
*/
status: 'success' | 'error' | 'warning' | 'info';
/**
* @description 描述
* @descriptionEn Description
*/
description?: string;
/**
* @description 图标
* @descriptionEn Icon
*/
icon?: React.ReactNode;
/**
* @description 子元素
* @descriptionEn Children
*/
children?: React.ReactNode;
}
function StatusCard(props: IStatusCardProps) {
const { getPrefixCls } = useProviderContext();
const prefixCls = getPrefixCls('status-card');
const icon = props.icon || {
'success': ,
'error': ,
'warning': ,
'info': ,
}[props.status];
return <>
{
props.description &&
{props.description}
}
{
props.children &&
{props.children}
}
>
}
export interface IStatusCardHITLProps {
/**
* @description 标题
* @descriptionEn Title
*/
title: string | React.ReactNode;
/**
* @description 描述
* @descriptionEn Description
* @default '需要用户人工干预'
*/
description?: string;
/**
* @description 等待按钮文本
* @descriptionEn Wait Button Text
* @default '我已完成,继续任务'
*/
waitButtonText?: string;
/**
* @description 完成按钮文本
* @descriptionEn Done Button Text
* @default '用户已确认'
*/
doneButtonText?: string;
/**
* @description 是否完成
* @descriptionEn Done
*/
done: boolean;
/**
* @description 完成回调
* @descriptionEn Done Callback
*/
onDone: () => void;
/**
* @description 操作按钮
* @descriptionEn Actions
*/
actions?: React.ReactNode;
}
StatusCard.HITL = function (props: IStatusCardHITLProps) {
const { title = '需要用户人工干预', description, waitButtonText = '我已完成,继续任务', doneButtonText = '用户已确认' } = props;
const { getPrefixCls } = useProviderContext();
const prefixCls = getPrefixCls('status-card');
const button = props.actions !== undefined ? props.actions : (props.done ?
}>{doneButtonText} :
);
return
{
description || button ?
{
description &&
{description}
}
{button}
: null
}
}
export interface IStatusCardStatisticProps {
/**
* @description 统计数据
* @descriptionEn Values
*/
values: {
title: string;
value: string;
}[];
}
StatusCard.Statistic = function (props: IStatusCardStatisticProps) {
const { getPrefixCls } = useProviderContext();
const prefixCls = getPrefixCls('status-card');
return
{props.values.map(item => {
return
{item.title}
{item.value}
})}
}
export default StatusCard;