import { useState } from 'react'; import type { ProblemFramingPlan } from '../../../shared/types/api'; import { useI18n } from '../../../shared/i18n'; import { ProblemPlanEditor } from './ProblemPlanEditor'; interface ProblemFramingOverlayProps { open: boolean; status: 'loading' | 'ready' | 'error'; plan: ProblemFramingPlan | null; error: string | null; adjustment: string; generating: boolean; onAdjustmentChange: (value: string) => void; onRetry: () => void; onInitialRetry: () => void; onPlanChange: (plan: ProblemFramingPlan) => void; onGenerate: () => void; onClose: () => void; } /** 等待时卡片右上角的三只猫爪:猫在整理结构。方案就绪后隐去,不抢位。*/ function PawStamp({ delay = 0 }: { delay?: number }) { return (
); } function WaitingPaws() { return ( ); } export function ProblemFramingOverlay(props: ProblemFramingOverlayProps) { return props.open ? : null; } function ProblemFramingOverlayContent({ status, plan, error, adjustment, generating, onAdjustmentChange, onRetry, onInitialRetry, onPlanChange, onGenerate, onClose, }: ProblemFramingOverlayProps) { const { t } = useI18n(); const [confirmDiscard, setConfirmDiscard] = useState(false); const busy = status === 'loading' || generating; const statusKey = status === 'loading' ? plan ? 'problem.status.refining' : 'problem.status.loading' : status === 'ready' ? 'problem.status.ready' : 'problem.status.error'; return
{status === 'loading' && }

{t(statusKey)}

{plan ? : status === 'loading' ?