'use client'; import { useState } from 'react'; import { cn } from '@/lib/ui-styles'; interface ActivationModalProps { isOpen: boolean; onClose: () => void; onSuccess?: () => void; } export default function ActivationModal({ isOpen, onClose, onSuccess }: ActivationModalProps) { const [activationCode, setActivationCode] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); if (!isOpen) return null; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); const code = activationCode.trim().toUpperCase(); if (!code) { setError('请输入激活码'); return; } // 简单格式验证 if (!code.startsWith('FLNXI-')) { setError('激活码格式不正确'); return; } setLoading(true); try { const response = await fetch('/api/license/activate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ activationCode: code }), }); const data = await response.json(); if (data.success) { onSuccess?.(); onClose(); // 刷新页面以更新许可证状态 window.location.reload(); } else { setError(data.error || '激活失败,请检查激活码是否正确'); } } catch (err) { setError('网络错误,请稍后重试'); } finally { setLoading(false); } }; return (
{/* 背景遮罩 */}
{/* 弹窗内容 */}
{/* 头部 */}

激活许可证

{/* 内容 */}
setActivationCode(e.target.value.toUpperCase())} placeholder="FLNXI-PRO-XXXX-XXXX-XXXX-XXXX" className={cn( 'w-full px-4 py-3 rounded-lg border text-sm font-mono', 'bg-slate-50 dark:bg-slate-900', 'border-slate-200 dark:border-slate-700', 'text-slate-900 dark:text-white', 'placeholder:text-slate-400 dark:placeholder:text-slate-500', 'focus:outline-none focus:ring-2 focus:ring-slate-200 dark:focus:ring-slate-700 focus:border-slate-900 dark:focus:border-slate-500', 'transition-colors' )} autoFocus />

激活码格式:FLNXI-PRO-XXXX-XXXX-XXXX-XXXX

{error && (

{error}

)}
{/* 底部 */}

如需许可证,请联系系统交付人员或管理员。

); }