Spaces:
Running
Running
superxuu commited on
Commit ·
951cee4
1
Parent(s): be8b6db
feat: link user info modal with payment flow for VIP renewal
Browse files
frontend/src/components/UserInfoModal.tsx
CHANGED
|
@@ -8,9 +8,10 @@ interface UserInfoModalProps {
|
|
| 8 |
username: string;
|
| 9 |
isVip: boolean;
|
| 10 |
vipExpireAt: string | null;
|
|
|
|
| 11 |
}
|
| 12 |
|
| 13 |
-
export default function UserInfoModal({ isOpen, onClose, username, isVip, vipExpireAt }: UserInfoModalProps) {
|
| 14 |
if (!isOpen) return null;
|
| 15 |
|
| 16 |
// 格式化到期日期
|
|
@@ -87,10 +88,11 @@ export default function UserInfoModal({ isOpen, onClose, username, isVip, vipExp
|
|
| 87 |
|
| 88 |
{/* 按钮 */}
|
| 89 |
<button
|
| 90 |
-
onClick={onClose}
|
| 91 |
-
className="w-full mt-8 bg-
|
| 92 |
>
|
| 93 |
-
|
|
|
|
| 94 |
</button>
|
| 95 |
</div>
|
| 96 |
</div>
|
|
|
|
| 8 |
username: string;
|
| 9 |
isVip: boolean;
|
| 10 |
vipExpireAt: string | null;
|
| 11 |
+
onRenewVip?: () => void;
|
| 12 |
}
|
| 13 |
|
| 14 |
+
export default function UserInfoModal({ isOpen, onClose, username, isVip, vipExpireAt, onRenewVip }: UserInfoModalProps) {
|
| 15 |
if (!isOpen) return null;
|
| 16 |
|
| 17 |
// 格式化到期日期
|
|
|
|
| 88 |
|
| 89 |
{/* 按钮 */}
|
| 90 |
<button
|
| 91 |
+
onClick={onRenewVip || onClose}
|
| 92 |
+
className="w-full mt-8 bg-gradient-to-r from-yellow-500 to-orange-600 hover:from-yellow-400 hover:to-orange-500 text-white font-bold py-3.5 rounded-xl transition-all shadow-lg shadow-orange-900/20 active:scale-[0.98] flex items-center justify-center gap-2"
|
| 93 |
>
|
| 94 |
+
<Crown size={16} />
|
| 95 |
+
<span>会员续费</span>
|
| 96 |
</button>
|
| 97 |
</div>
|
| 98 |
</div>
|
frontend/src/components/UserMenu.tsx
CHANGED
|
@@ -165,6 +165,10 @@ export default function UserMenu({ compact = false }: UserMenuProps) {
|
|
| 165 |
username={username || ''}
|
| 166 |
isVip={isVip}
|
| 167 |
vipExpireAt={vipExpireAt}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 168 |
/>
|
| 169 |
<AdminPanel
|
| 170 |
isOpen={showAdminPanel}
|
|
|
|
| 165 |
username={username || ''}
|
| 166 |
isVip={isVip}
|
| 167 |
vipExpireAt={vipExpireAt}
|
| 168 |
+
onRenewVip={() => {
|
| 169 |
+
setShowUserInfo(false);
|
| 170 |
+
setShowPayment(true);
|
| 171 |
+
}}
|
| 172 |
/>
|
| 173 |
<AdminPanel
|
| 174 |
isOpen={showAdminPanel}
|