The commit involves modifications in various components to change 'text-gray-500' to 'text-muted-foreground'. The purpose of this change is to create uniformity in text colors across the application, enhancing the user interface's overall look and making color scheme tweaks easier in the future.
160 lines
4.0 KiB
TypeScript
160 lines
4.0 KiB
TypeScript
'use client';
|
|
|
|
import { useRouter } from 'next/navigation';
|
|
|
|
import { ArrowLeftCircle, ArrowRightCircle } from 'lucide-react';
|
|
|
|
import { AccountSelector } from '@kit/accounts/account-selector';
|
|
import { If } from '@kit/ui/if';
|
|
import { Sidebar, SidebarContent } from '@kit/ui/sidebar';
|
|
import {
|
|
Tooltip,
|
|
TooltipContent,
|
|
TooltipProvider,
|
|
TooltipTrigger,
|
|
} from '@kit/ui/tooltip';
|
|
import { Trans } from '@kit/ui/trans';
|
|
import { cn } from '@kit/ui/utils';
|
|
|
|
import { ProfileAccountDropdownContainer } from '~/(dashboard)/home/_components/personal-account-dropdown-container';
|
|
import featureFlagsConfig from '~/config/feature-flags.config';
|
|
import pathsConfig from '~/config/paths.config';
|
|
|
|
import { AccountLayoutSidebarNavigation } from './account-layout-sidebar-navigation';
|
|
|
|
type AccountModel = {
|
|
label: string | null;
|
|
value: string | null;
|
|
image: string | null;
|
|
};
|
|
|
|
const features = {
|
|
enableTeamAccounts: featureFlagsConfig.enableTeamAccounts,
|
|
enableTeamCreation: featureFlagsConfig.enableTeamCreation,
|
|
};
|
|
|
|
export function AccountLayoutSidebar(props: {
|
|
account: string;
|
|
accounts: AccountModel[];
|
|
collapsed: boolean;
|
|
}) {
|
|
return (
|
|
<Sidebar collapsed={props.collapsed}>
|
|
{({ collapsed, setCollapsed }) => (
|
|
<SidebarContainer
|
|
collapsed={collapsed}
|
|
setCollapsed={setCollapsed}
|
|
account={props.account}
|
|
accounts={props.accounts}
|
|
/>
|
|
)}
|
|
</Sidebar>
|
|
);
|
|
}
|
|
|
|
function SidebarContainer(props: {
|
|
account: string;
|
|
accounts: AccountModel[];
|
|
collapsed: boolean;
|
|
setCollapsed: (collapsed: boolean) => void;
|
|
collapsible?: boolean;
|
|
}) {
|
|
const { account, accounts } = props;
|
|
const router = useRouter();
|
|
|
|
return (
|
|
<>
|
|
<SidebarContent className={'my-4'}>
|
|
<AccountSelector
|
|
selectedAccount={account}
|
|
accounts={accounts}
|
|
collapsed={props.collapsed}
|
|
features={features}
|
|
onAccountChange={(value) => {
|
|
const path = value
|
|
? pathsConfig.app.accountHome.replace('[account]', value)
|
|
: pathsConfig.app.home;
|
|
|
|
router.replace(path);
|
|
}}
|
|
/>
|
|
</SidebarContent>
|
|
|
|
<SidebarContent className={`h-[calc(100%-160px)] overflow-y-auto`}>
|
|
<AccountLayoutSidebarNavigation account={account} />
|
|
</SidebarContent>
|
|
|
|
<div className={'absolute bottom-4 left-0 w-full'}>
|
|
<SidebarContent>
|
|
<ProfileAccountDropdownContainer collapsed={props.collapsed} />
|
|
|
|
<If condition={props.collapsible}>
|
|
<AppSidebarFooterMenu
|
|
collapsed={props.collapsed}
|
|
setCollapsed={props.setCollapsed}
|
|
/>
|
|
</If>
|
|
</SidebarContent>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|
|
|
|
function AppSidebarFooterMenu(props: {
|
|
collapsed: boolean;
|
|
setCollapsed: (collapsed: boolean) => void;
|
|
}) {
|
|
return (
|
|
<CollapsibleButton
|
|
collapsed={props.collapsed}
|
|
onClick={props.setCollapsed}
|
|
/>
|
|
);
|
|
}
|
|
|
|
function CollapsibleButton({
|
|
collapsed,
|
|
onClick,
|
|
}: React.PropsWithChildren<{
|
|
collapsed: boolean;
|
|
onClick: (collapsed: boolean) => void;
|
|
}>) {
|
|
const className = cn(
|
|
`bg-background absolute -right-[10.5px] bottom-4 cursor-pointer block`,
|
|
);
|
|
|
|
const iconClassName = 'bg-background text-muted-foreground h-5 w-5';
|
|
|
|
return (
|
|
<TooltipProvider>
|
|
<Tooltip>
|
|
<TooltipTrigger
|
|
className={className}
|
|
aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}
|
|
onClick={() => onClick(!collapsed)}
|
|
>
|
|
<ArrowRightCircle
|
|
className={cn(iconClassName, {
|
|
hidden: !collapsed,
|
|
})}
|
|
/>
|
|
|
|
<ArrowLeftCircle
|
|
className={cn(iconClassName, {
|
|
hidden: collapsed,
|
|
})}
|
|
/>
|
|
</TooltipTrigger>
|
|
|
|
<TooltipContent sideOffset={20}>
|
|
<Trans
|
|
i18nKey={
|
|
collapsed ? 'common:expandSidebar' : 'common:collapseSidebar'
|
|
}
|
|
/>
|
|
</TooltipContent>
|
|
</Tooltip>
|
|
</TooltipProvider>
|
|
);
|
|
}
|