import {
CreditCard, LayoutDashboard, Settings, Users, Database,
UserCheck, GraduationCap, Hotel, Calendar, Wallet,
FileText, Mail, Globe,
} from 'lucide-react';
import { NavigationConfigSchema } from '@kit/ui/navigation-schema';
import featureFlagsConfig from '~/config/feature-flags.config';
import pathsConfig from '~/config/paths.config';
const iconClasses = 'w-4';
const getRoutes = (account: string) => [
{
label: 'common.routes.application',
children: [
{
label: 'common.routes.dashboard',
path: pathsConfig.app.accountHome.replace('[account]', account),
Icon: ,
highlightMatch: `${pathsConfig.app.home}$`,
},
featureFlagsConfig.enableModuleBuilder
? {
label: 'common.routes.modules',
path: createPath(pathsConfig.app.accountModules, account),
Icon: ,
}
: undefined,
featureFlagsConfig.enableMemberManagement
? {
label: 'common.routes.cmsMembers',
path: createPath(pathsConfig.app.accountCmsMembers, account),
Icon: ,
}
: undefined,
featureFlagsConfig.enableCourseManagement
? {
label: 'common.routes.courses',
path: createPath(pathsConfig.app.accountCourses, account),
Icon: ,
}
: undefined,
featureFlagsConfig.enableBookingManagement
? {
label: 'common.routes.bookings',
path: createPath(pathsConfig.app.accountBookings, account),
Icon: ,
}
: undefined,
{
label: 'common.routes.events',
path: createPath(`/home/[account]/events`, account),
Icon: ,
},
featureFlagsConfig.enableSepaPayments
? {
label: 'common.routes.finance',
path: createPath(pathsConfig.app.accountFinance, account),
Icon: ,
}
: undefined,
featureFlagsConfig.enableDocumentGeneration
? {
label: 'common.routes.documents',
path: createPath(pathsConfig.app.accountDocuments, account),
Icon: ,
}
: undefined,
featureFlagsConfig.enableNewsletter
? {
label: 'common.routes.newsletter',
path: createPath(pathsConfig.app.accountNewsletter, account),
Icon: ,
}
: undefined,
{
label: 'common.routes.siteBuilder',
path: createPath(`/home/[account]/site-builder`, account),
Icon: ,
},
].filter(Boolean),
},
{
label: 'common.routes.settings',
collapsible: false,
children: [
{
label: 'common.routes.settings',
path: createPath(pathsConfig.app.accountSettings, account),
Icon: ,
},
{
label: 'common.routes.members',
path: createPath(pathsConfig.app.accountMembers, account),
Icon: ,
},
featureFlagsConfig.enableTeamAccountBilling
? {
label: 'common.routes.billing',
path: createPath(pathsConfig.app.accountBilling, account),
Icon: ,
}
: undefined,
].filter(Boolean),
},
];
export function getTeamAccountSidebarConfig(account: string) {
return NavigationConfigSchema.parse({
routes: getRoutes(account),
style: process.env.NEXT_PUBLIC_TEAM_NAVIGATION_STYLE,
sidebarCollapsed: process.env.NEXT_PUBLIC_TEAM_SIDEBAR_COLLAPSED,
sidebarCollapsedStyle: process.env.NEXT_PUBLIC_SIDEBAR_COLLAPSIBLE_STYLE,
});
}
function createPath(path: string, account: string) {
return path.replace('[account]', account);
}