completionId: cgen-b58453de71e04e2c9e26bd2d1c8d79b7

cgen-b58453de71e04e2c9e26bd2d1c8d79b7
This commit is contained in:
Builder.io 2025-11-13 06:03:55 +00:00
parent 72220092e5
commit 3584cbefc6

View file

@ -380,70 +380,85 @@ export default function Login() {
) : null} ) : null}
{/* Social Login Buttons */} {/* Social Login Buttons */}
<div className="space-y-3"> <div className="space-y-3">
<Button <div className="space-y-2">
variant="outline" <p className="text-xs font-semibold text-muted-foreground uppercase tracking-wider">
className="w-full hover-lift interactive-scale" Quick Sign In
onClick={() => handleSocialLogin("github")} </p>
> <div className="grid grid-cols-2 gap-2">
<Github className="h-4 w-4 mr-2" /> <Button
Continue with GitHub variant="outline"
</Button> className="w-full hover-lift interactive-scale border-border/50 hover:border-aethex-400/50 hover:bg-aethex-500/10 transition-all duration-200"
<Button onClick={() => handleSocialLogin("github")}
variant="outline" >
className="w-full hover-lift interactive-scale" <Github className="h-4 w-4" />
onClick={() => handleSocialLogin("google")} <span className="hidden sm:inline ml-1">GitHub</span>
> </Button>
<Mail className="h-4 w-4 mr-2" /> <Button
Continue with Google variant="outline"
</Button> className="w-full hover-lift interactive-scale border-border/50 hover:border-neon-blue/50 hover:bg-neon-blue/10 transition-all duration-200"
<Button onClick={() => handleSocialLogin("google")}
variant="outline" >
className="w-full hover-lift interactive-scale" <Mail className="h-4 w-4" />
onClick={handleWeb3Login} <span className="hidden sm:inline ml-1">Google</span>
> </Button>
<Wallet className="h-4 w-4 mr-2" /> </div>
Connect Ethereum Wallet </div>
</Button>
<Button <div className="space-y-2">
variant="outline" <p className="text-xs font-semibold text-muted-foreground uppercase tracking-wider">
className="w-full hover-lift interactive-scale" Connect with
onClick={() => { </p>
const apiBase = <div className="space-y-2">
(import.meta as any)?.env?.VITE_API_BASE || <Button
window.location.origin; variant="outline"
const u = new URL("/api/roblox/oauth/start", apiBase); className="w-full hover-lift interactive-scale border-border/50 hover:border-purple-500/50 hover:bg-purple-500/10 transition-all duration-200"
const next = new URLSearchParams( onClick={() => {
window.location.search, const apiBase =
).get("next"); (import.meta as any)?.env?.VITE_API_BASE ||
if (next && next.startsWith("/")) window.location.origin;
u.searchParams.set("state", next); const u = new URL("/api/roblox/oauth/start", apiBase);
window.location.href = u.toString(); const next = new URLSearchParams(
}} window.location.search,
> ).get("next");
<Sparkles className="h-4 w-4 mr-2" /> if (next && next.startsWith("/"))
Continue with Roblox u.searchParams.set("state", next);
</Button> window.location.href = u.toString();
{!isActivity && ( }}
<Button >
variant="outline" <Sparkles className="h-4 w-4 mr-2" />
className="w-full hover-lift interactive-scale" Roblox Account
onClick={() => { </Button>
const apiBase = {!isActivity && (
(import.meta as any)?.env?.VITE_API_BASE || <Button
window.location.origin; variant="outline"
const u = new URL("/api/discord/oauth/start", apiBase); className="w-full hover-lift interactive-scale border-border/50 hover:border-indigo-500/50 hover:bg-indigo-500/10 transition-all duration-200"
const next = new URLSearchParams( onClick={() => {
window.location.search, const apiBase =
).get("next"); (import.meta as any)?.env?.VITE_API_BASE ||
if (next && next.startsWith("/")) window.location.origin;
u.searchParams.set("state", next); const u = new URL("/api/discord/oauth/start", apiBase);
window.location.href = u.toString(); const next = new URLSearchParams(
}} window.location.search,
> ).get("next");
<DiscordIcon /> if (next && next.startsWith("/"))
<span className="ml-2">Continue with Discord</span> u.searchParams.set("state", next);
</Button> window.location.href = u.toString();
)} }}
>
<DiscordIcon />
<span className="ml-2">Discord</span>
</Button>
)}
<Button
variant="outline"
className="w-full hover-lift interactive-scale border-border/50 hover:border-amber-500/50 hover:bg-amber-500/10 transition-all duration-200"
onClick={handleWeb3Login}
>
<Wallet className="h-4 w-4 mr-2" />
Ethereum Wallet
</Button>
</div>
</div>
</div> </div>
{/* Email/Password Form */} {/* Email/Password Form */}