import { useState } from 'react'
import { Button, Modal, Steps, Tag } from 'antd'
import {
QuestionCircleOutlined,
BulbOutlined,
WarningOutlined,
CheckCircleOutlined,
InfoCircleOutlined,
} from '@ant-design/icons'
import './ButtonWithGuide.css'
/**
* 带引导的按钮组件 - 简洁现代设计
* 在按钮旁边显示一个简洁的帮助图标,点击后显示详细引导
*/
function ButtonWithGuide({
label,
icon,
type = 'default',
danger = false,
disabled = false,
onClick,
guide,
size = 'middle',
...restProps
}) {
const [showGuideModal, setShowGuideModal] = useState(false)
const handleGuideClick = (e) => {
e.stopPropagation()
if (guide) {
setShowGuideModal(true)
}
}
return (
<>
{guide && !disabled && (
)}
{/* 引导弹窗 */}
{guide && (
{guide.icon || icon}
{guide.title}
{guide.badge && (
{guide.badge.text}
)}
}
open={showGuideModal}
onCancel={() => setShowGuideModal(false)}
footer={[
,
]}
width={600}
className="button-guide-modal"
>
{/* 功能描述 */}
{guide.description && (
)}
{/* 使用步骤 */}
{guide.steps && guide.steps.length > 0 && (
操作步骤
({
title: `步骤 ${index + 1}`,
description: step,
status: 'wait',
}))}
className="guide-steps"
/>
)}
{/* 使用场景 */}
{guide.scenarios && guide.scenarios.length > 0 && (
适用场景
{guide.scenarios.map((scenario, index) => (
- {scenario}
))}
)}
{/* 注意事项 */}
{guide.warnings && guide.warnings.length > 0 && (
注意事项
{guide.warnings.map((warning, index) => (
- {warning}
))}
)}
{/* 快捷键和权限 */}
{(guide.shortcut || guide.permission) && (
{guide.shortcut && (
快捷键:
{guide.shortcut}
)}
{guide.permission && (
权限要求:
{guide.permission}
)}
)}
)}
>
)
}
export default ButtonWithGuide