Next.js version has been upgraded from 14.2.0-canary.58 to 14.2.0-canary.60 for performance and stability improvements. Additionally, account session handling has been improved by fetching the session data during server-side processing and passing it to various components, thus optimizing the user experience.
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { use } from 'react';
|
|
|
|
import { cookies } from 'next/headers';
|
|
|
|
import { Sidebar, SidebarContent, SidebarNavigation } from '@kit/ui/sidebar';
|
|
|
|
import { personalAccountSidebarConfig } from '~/config/personal-account-sidebar.config';
|
|
|
|
// home imports
|
|
import { HomeSidebarAccountSelector } from '../_components/home-sidebar-account-selector';
|
|
import { ProfileAccountDropdownContainer } from '../_components/personal-account-dropdown-container';
|
|
import { loadUserWorkspace } from '../_lib/load-user-workspace';
|
|
|
|
export function HomeSidebar() {
|
|
const collapsed = getSidebarCollapsed();
|
|
const { accounts, session } = use(loadUserWorkspace());
|
|
|
|
return (
|
|
<Sidebar collapsed={collapsed}>
|
|
<SidebarContent className={'my-4'}>
|
|
<HomeSidebarAccountSelector collapsed={collapsed} accounts={accounts} />
|
|
</SidebarContent>
|
|
|
|
<SidebarContent className={`h-[calc(100%-160px)] overflow-y-auto`}>
|
|
<SidebarNavigation config={personalAccountSidebarConfig} />
|
|
</SidebarContent>
|
|
|
|
<div className={'absolute bottom-4 left-0 w-full'}>
|
|
<SidebarContent>
|
|
<ProfileAccountDropdownContainer
|
|
collapsed={collapsed}
|
|
user={session?.user ?? null}
|
|
/>
|
|
</SidebarContent>
|
|
</div>
|
|
</Sidebar>
|
|
);
|
|
}
|
|
|
|
function getSidebarCollapsed() {
|
|
return cookies().get('sidebar-collapsed')?.value === 'true';
|
|
}
|