Files
medreport_mrb2b/packages/shared/src/components/personal-account-dropdown-container.tsx
2025-09-04 10:59:34 +03:00

60 lines
1.5 KiB
TypeScript

'use client';
import type { User } from '@supabase/supabase-js';
import { PersonalAccountDropdown } from '@kit/accounts/personal-account-dropdown';
import { ApplicationRole } from '@kit/accounts/types/accounts';
import { featureFlagsConfig, pathsConfig } from '@kit/shared/config';
import { useSignOut } from '@kit/supabase/hooks/use-sign-out';
import { useUser } from '@kit/supabase/hooks/use-user';
const paths = {
home: pathsConfig.app.home,
admin: pathsConfig.app.admin,
doctor: pathsConfig.app.doctor,
personalAccountSettings: pathsConfig.app.personalAccountSettings,
};
const features = {
enableThemeToggle: featureFlagsConfig.enableThemeToggle,
};
export function ProfileAccountDropdownContainer(props: {
user?: User;
showProfileName?: boolean;
account?: {
id: string | null;
name: string | null;
picture_url: string | null;
application_role: ApplicationRole | null;
};
accounts: {
label: string | null;
value: string | null;
image?: string | null;
application_role: ApplicationRole | null;
}[];
}) {
const signOut = useSignOut();
const user = useUser(props.user);
const userData = user.data;
if (!userData) {
return null;
}
return (
<PersonalAccountDropdown
className={'w-full'}
paths={paths}
features={features}
user={userData}
account={props.account}
accounts={props.accounts}
signOutRequested={() => signOut.mutateAsync()}
showProfileName={props.showProfileName}
/>
);
}