Files
QuestionProject/hy_qa_asset_backend/frontend/components/h5/MockAuthPanel.tsx
2026-07-05 18:32:28 +08:00

80 lines
2.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client";
import { LogIn, ShieldCheck, UserPlus, X } from "lucide-react";
export type MockUser = {
name: string;
phone: string;
mode: "login" | "register";
};
export default function MockAuthPanel({
open,
user,
onClose,
onMockLogin,
onLogout
}: {
open: boolean;
user: MockUser | null;
onClose: () => void;
onMockLogin: (mode: MockUser["mode"]) => void;
onLogout: () => void;
}) {
if (!open) return null;
return (
<div className="absolute inset-0 z-30 flex items-end bg-slate-950/35 px-3 pb-3">
<section className="w-full rounded-t-[18px] rounded-b-md bg-white p-4 shadow-2xl">
<div className="mb-4 flex items-center justify-between">
<div>
<h2 className="text-lg font-semibold text-ink"></h2>
<p className="mt-1 text-sm text-slate-500"> mock </p>
</div>
<button onClick={onClose} className="flex h-9 w-9 items-center justify-center rounded-md hover:bg-slate-100" aria-label="关闭">
<X className="h-5 w-5" aria-hidden />
</button>
</div>
{user ? (
<div className="rounded-md border border-line bg-panel p-3">
<div className="flex items-center gap-3">
<div className="flex h-10 w-10 items-center justify-center rounded-md bg-jade text-white">
<ShieldCheck className="h-5 w-5" aria-hidden />
</div>
<div>
<div className="font-medium text-ink">{user.name}</div>
<div className="text-sm text-slate-500">{user.phone}</div>
</div>
</div>
<button onClick={onLogout} className="mt-3 h-10 w-full rounded-md border border-line text-sm font-medium hover:bg-white">
退 mock
</button>
</div>
) : (
<div className="grid gap-3">
<button
onClick={() => onMockLogin("login")}
className="flex h-11 items-center justify-center gap-2 rounded-md bg-jade text-sm font-medium text-white hover:bg-teal-800"
>
<LogIn className="h-4 w-4" aria-hidden />
mock
</button>
<button
onClick={() => onMockLogin("register")}
className="flex h-11 items-center justify-center gap-2 rounded-md border border-line text-sm font-medium text-ink hover:bg-slate-50"
>
<UserPlus className="h-4 w-4" aria-hidden />
mock
</button>
</div>
)}
<div className="mt-4 rounded-md bg-amber-50 px-3 py-2 text-xs leading-5 text-amber-800">
</div>
</section>
</div>
);
}