mirror of
https://gitlab.com/soapbox-pub/mkstack.git
synced 2025-08-28 13:39:23 +00:00
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
![]() |
import React, { useState } from 'react';
|
||
|
import { User } from 'lucide-react';
|
||
|
import { Button } from '@/components/ui/button.tsx';
|
||
|
import LoginDialog from './LoginDialog';
|
||
|
import SignupDialog from './SignupDialog';
|
||
|
import { useLoggedInAccounts } from '@/hooks/useLoggedInAccounts';
|
||
|
import { AccountSwitcher } from './AccountSwitcher';
|
||
|
|
||
|
export function LoginArea() {
|
||
|
const { currentUser } = useLoggedInAccounts();
|
||
|
const [loginDialogOpen, setLoginDialogOpen] = useState(false);
|
||
|
const [signupDialogOpen, setSignupDialogOpen] = useState(false);
|
||
|
|
||
|
const handleLogin = () => {
|
||
|
setLoginDialogOpen(false);
|
||
|
setSignupDialogOpen(false);
|
||
|
};
|
||
|
|
||
|
if (!currentUser) {
|
||
|
return (
|
||
|
<>
|
||
|
<Button
|
||
|
onClick={() => setLoginDialogOpen(true)}
|
||
|
className='flex items-center gap-2 px-4 py-2 rounded-full bg-primary text-primary-foreground w-full font-medium transition-all hover:bg-primary/90 animate-scale-in'
|
||
|
>
|
||
|
<User className='w-4 h-4' />
|
||
|
<span>Log in</span>
|
||
|
</Button>
|
||
|
|
||
|
<LoginDialog
|
||
|
isOpen={loginDialogOpen}
|
||
|
onClose={() => setLoginDialogOpen(false)}
|
||
|
onLogin={handleLogin}
|
||
|
onSignup={() => setSignupDialogOpen(true)}
|
||
|
/>
|
||
|
|
||
|
<SignupDialog
|
||
|
isOpen={signupDialogOpen}
|
||
|
onClose={() => setSignupDialogOpen(false)}
|
||
|
/>
|
||
|
</>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
<AccountSwitcher
|
||
|
onAddAccountClick={() => setLoginDialogOpen(true)}
|
||
|
/>
|
||
|
|
||
|
<LoginDialog
|
||
|
isOpen={loginDialogOpen}
|
||
|
onClose={() => setLoginDialogOpen(false)}
|
||
|
onLogin={handleLogin}
|
||
|
onSignup={() => setSignupDialogOpen(true)}
|
||
|
/>
|
||
|
|
||
|
<SignupDialog
|
||
|
isOpen={signupDialogOpen}
|
||
|
onClose={() => setSignupDialogOpen(false)}
|
||
|
/>
|
||
|
</>
|
||
|
);
|
||
|
}
|