Files
medreport_mrb2b/app/home/[account]/_components/team-account-navigation-menu.tsx
Helena b4b75438d2 Fix: add application_role to account-related fields (#48)
* Fix: fix accounts view, menu

* add migration

* add application_role to account-related fields
2025-08-14 11:40:53 +03:00

64 lines
1.7 KiB
TypeScript

import { useMemo } from 'react';
import { AppLogo } from '~/components/app-logo';
import { ProfileAccountDropdownContainer } from '~/components/personal-account-dropdown-container';
import { getTeamAccountSidebarConfig } from '~/config/team-account-navigation.config';
// local imports
import { TeamAccountWorkspace } from '../_lib/server/team-account-workspace.loader';
import { TeamAccountNotifications } from './team-account-notifications';
export function TeamAccountNavigationMenu(props: {
workspace: TeamAccountWorkspace;
}) {
const { account, user, accounts: rawAccounts } = props.workspace;
const accounts = useMemo(
() =>
rawAccounts.map((account) => ({
label: account.name,
value: account.slug,
image: account.picture_url,
application_role: account.application_role,
})),
[rawAccounts],
);
const routes = getTeamAccountSidebarConfig(account.slug).routes.reduce<
Array<{
path: string;
label: string;
Icon?: React.ReactNode;
end?: boolean | ((path: string) => boolean);
}>
>((acc, item) => {
if ('children' in item) {
return [...acc, ...item.children];
}
if ('divider' in item) {
return acc;
}
return [...acc, item];
}, []);
return (
<div className={'flex w-full flex-1 justify-between'}>
<div className={'flex items-center space-x-8'}>
<AppLogo />
</div>
<div className={'flex items-center justify-end gap-2 space-x-2.5'}>
<TeamAccountNotifications accountId={account.id} userId={user.id} />
<ProfileAccountDropdownContainer
user={user}
account={account}
showProfileName
accounts={accounts}
/>
</div>
</div>
);
}