Files
myeasycms-v2/apps/web/app/(marketing)/_components/site-header-account-section.tsx
giancarlo 041efb89fb Remove team account related services and actions
Removed services and actions related to team account deletion as well as updated paths within other dependent files, better reflecting their new locations. Also, added a new service titled 'AccountBillingService' for handling billing-related operations and restructured the form layout and handled translation in 'team-account-danger-zone' component.
2024-03-28 15:27:56 +08:00

67 lines
1.7 KiB
TypeScript

'use client';
import Link from 'next/link';
import type { Session } from '@supabase/supabase-js';
import { ChevronRight } from 'lucide-react';
import { PersonalAccountDropdown } from '@kit/accounts/personal-account-dropdown';
import { useSignOut } from '@kit/supabase/hooks/use-sign-out';
import { useUserSession } from '@kit/supabase/hooks/use-user-session';
import { Button } from '@kit/ui/button';
import { If } from '@kit/ui/if';
import { Trans } from '@kit/ui/trans';
import pathsConfig from '~/config/paths.config';
export function SiteHeaderAccountSection(
props: React.PropsWithChildren<{
session: Session | null;
}>,
) {
if (!props.session) {
return <AuthButtons />;
}
return <SuspendedPersonalAccountDropdown session={props.session} />;
}
function SuspendedPersonalAccountDropdown(props: { session: Session | null }) {
const signOut = useSignOut();
const userSession = useUserSession(props.session);
return (
<If condition={userSession.data} fallback={<AuthButtons />}>
{(session) => (
<PersonalAccountDropdown
paths={{
home: pathsConfig.app.home,
}}
session={session}
signOutRequested={() => signOut.mutateAsync()}
/>
)}
</If>
);
}
function AuthButtons() {
return (
<div className={'hidden space-x-2 lg:flex'}>
<Button variant={'link'}>
<Link href={pathsConfig.auth.signIn}>
<Trans i18nKey={'auth:signIn'} />
</Link>
</Button>
<Link href={pathsConfig.auth.signUp}>
<Button className={'rounded-full'}>
<Trans i18nKey={'auth:signUp'} />
<ChevronRight className={'h-4'} />
</Button>
</Link>
</div>
);
}