Files
myeasycms-v2/apps/web/app/(marketing)/_components/site-header-account-section.tsx
giancarlo e00cb3c591 Refactor logger usage and add discount field to checkout
This commit refactors the logger usage in various files to make it more streamlined and consistent. It also introduces a new 'enableDiscountField' feature for the checkout that can be toggled on specific products. This allows customers to apply discounts at checkout if the product or subscription plan has the 'enableDiscountField' set to true.
2024-04-10 22:24:11 +08:00

79 lines
1.8 KiB
TypeScript

'use client';
import Link from 'next/link';
import type { User } 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 { useUser } from '@kit/supabase/hooks/use-user';
import { Button } from '@kit/ui/button';
import { ModeToggle } from '@kit/ui/mode-toggle';
import { Trans } from '@kit/ui/trans';
import featuresFlagConfig from '~/config/feature-flags.config';
import pathsConfig from '~/config/paths.config';
const paths = {
home: pathsConfig.app.home,
};
const features = {
enableThemeToggle: featuresFlagConfig.enableThemeToggle,
};
export function SiteHeaderAccountSection({
user,
}: React.PropsWithChildren<{
user: User | null;
}>) {
if (!user) {
return <AuthButtons />;
}
return <SuspendedPersonalAccountDropdown user={user} />;
}
function SuspendedPersonalAccountDropdown(props: { user: User | null }) {
const signOut = useSignOut();
const user = useUser(props.user);
if (user.data) {
return (
<PersonalAccountDropdown
paths={paths}
features={features}
user={user.data}
signOutRequested={() => signOut.mutateAsync()}
/>
);
}
return <AuthButtons />;
}
function AuthButtons() {
return (
<div className={'flex space-x-0.5'}>
<div className={'hidden space-x-0.5 md:flex'}>
<ModeToggle />
<Link href={pathsConfig.auth.signIn}>
<Button variant={'ghost'}>
<Trans i18nKey={'auth:signIn'} />
</Button>
</Link>
</div>
<Link href={pathsConfig.auth.signUp}>
<Button className={'rounded-full'}>
<Trans i18nKey={'auth:getStarted'} />
<ChevronRight className={'h-4'} />
</Button>
</Link>
</div>
);
}