completionId: cgen-b58453de71e04e2c9e26bd2d1c8d79b7
cgen-b58453de71e04e2c9e26bd2d1c8d79b7
This commit is contained in:
parent
72220092e5
commit
3584cbefc6
1 changed files with 79 additions and 64 deletions
|
|
@ -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 */}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue