import React from 'react'; import { Button, Space } from 'antd'; import { SendOutlined, CloseOutlined } from '@ant-design/icons'; import type { ClientState } from '@/types'; import { px2vw } from '@/utils/viewport'; import { getOssUrl } from '@/utils/oss'; import { wrapTrackedClick } from '@/utils/tracking'; const progressRing = getOssUrl('progress-ring.svg'); const micIcon = getOssUrl('mic-icon.svg'); interface RecordButtonProps { state: ClientState; onStartRecord: () => void; onSend: () => void; onCancel: () => void; /** 埋点用页面 ID,默认 chatbot;教程页传 tutorial_1 ~ tutorial_10 */ pageId?: string; } /** * 录音控制按钮组件 - 根据Figma设计 * 麦克风按钮:96x96,带114x114渐变进度环 */ export const RecordButton: React.FC = ({ state, onStartRecord, onSend, onCancel, pageId = 'chatbot', }) => { // 空闲或错误状态:仅显示麦克风按钮(隐藏 Tap to chat 提示) if (state === 'idle' || state === 'error') { return (
{/* 麦克风按钮 - 响应式尺寸 */}
{/* 进度环 (114x114) - 响应式 */}
Progress Ring
{/* 麦克风按钮背景 (96x96) - 响应式 */}
); } // 录音状态:显示取消/发送按钮 if (state === 'recording') { return (
{/* 录音状态提示 - 响应式尺寸 */}
录音中...
{/* 按钮组 - 响应式尺寸 */}
); } // 发送状态:显示加载中 if (state === 'sending') { return (
); } // 播放状态:显示禁用按钮 if (state === 'playing') { return (
); } return null; };