diff --git a/apps/business/src/components/Sidebar.tsx b/apps/business/src/components/Sidebar.tsx index 1001e7d..a3c43a6 100644 --- a/apps/business/src/components/Sidebar.tsx +++ b/apps/business/src/components/Sidebar.tsx @@ -86,106 +86,105 @@ export function Sidebar() { return nameEn.trim() || nameFa.trim() || fallbackBusinessName }, [locale, nameEn, nameFa, fallbackBusinessName]) - const navItems = useMemo( - () => - [ - { type: 'link', id: 'home', icon: Home, labelKey: 'nav.home', to: '/' }, - { - type: 'link', - id: 'business-profile', - icon: Building2, - labelKey: 'nav.businessProfile', - to: '/business-profile', - }, - { - type: 'group', - id: 'products', - icon: ShoppingBag, - labelKey: 'nav.products', - basePath: '/products', - moduleId: 'products', - children: [ - { labelKey: 'nav.products.overview', to: '/products' }, - { labelKey: 'nav.products.list', to: '/products/list' }, - { labelKey: 'nav.products.new', to: '/products/new' }, - { labelKey: 'nav.products.categories', to: '/products/categories' }, - { labelKey: 'nav.products.brands', to: '/products/brands' }, - { labelKey: 'nav.products.settings', to: '/products/settings' }, - ], - }, - { - type: 'group', - id: 'store', - icon: Store, - labelKey: 'nav.store', - basePath: '/store', - moduleId: 'store', - children: [ - { labelKey: 'nav.store.overview', to: '/store' }, - { labelKey: 'nav.store.items', to: '/store/items' }, - { labelKey: 'nav.store.orders', to: '/store/orders' }, - { labelKey: 'nav.store.shipping', to: '/store/shipping' }, - { labelKey: 'nav.store.cards', to: '/store/cards' }, - { labelKey: 'nav.store.settings', to: '/store/settings' }, - ], - }, - { type: 'link', id: 'customers', icon: Users, labelKey: 'nav.customers', to: '/customers' }, - { - type: 'group', - id: 'blog', - icon: FileText, - labelKey: 'nav.blog', - basePath: '/blog', - moduleId: 'blog', - children: [ - { labelKey: 'nav.blog.overview', to: '/blog' }, - { labelKey: 'nav.blog.list', to: '/blog/list' }, - { labelKey: 'nav.blog.new', to: '/blog/new' }, - { labelKey: 'nav.blog.categories', to: '/blog/categories' }, - { labelKey: 'nav.blog.settings', to: '/blog/settings' }, - ], - }, - { - type: 'group', - id: 'portfolios', - icon: Briefcase, - labelKey: 'nav.portfolios', - basePath: '/portfolios', - moduleId: 'portfolio', - children: [ - { labelKey: 'nav.portfolios.overview', to: '/portfolios' }, - { labelKey: 'nav.portfolios.list', to: '/portfolios/list' }, - { labelKey: 'nav.portfolios.new', to: '/portfolios/new' }, - { labelKey: 'nav.portfolios.categories', to: '/portfolios/categories' }, - { labelKey: 'nav.portfolios.settings', to: '/portfolios/settings' }, - ], - }, - { - type: 'group', - id: 'website', - icon: Globe, - labelKey: 'nav.website', - basePath: '/website', - children: [ - { labelKey: 'nav.website.overview', to: '/website' }, - { labelKey: 'nav.website.sliders', to: '/website/sliders' }, - { labelKey: 'nav.website.specialCategories', to: '/website/special-categories' }, - { labelKey: 'nav.website.specialBrands', to: '/website/special-brands' }, - { labelKey: 'nav.website.specialItems', to: '/website/special-items' }, - { labelKey: 'nav.website.contact', to: '/website/contact' }, - { labelKey: 'nav.website.subscriptions', to: '/website/subscriptions' }, - { labelKey: 'nav.website.faq', to: '/website/faq' }, - { labelKey: 'nav.website.badges', to: '/website/badges' }, - { labelKey: 'nav.website.ePayment', to: '/website/e-payment' }, - ], - }, - { type: 'link', id: 'settings', icon: Settings, labelKey: 'nav.settings', to: '/settings' }, - ].filter( - (item) => - !item.moduleId || hasBusinessModule(enabledModules, item.moduleId), - ), - [enabledModules], - ) + const navItems = useMemo(() => { + const items: NavItem[] = [ + { type: 'link', id: 'home', icon: Home, labelKey: 'nav.home', to: '/' }, + { + type: 'link', + id: 'business-profile', + icon: Building2, + labelKey: 'nav.businessProfile', + to: '/business-profile', + }, + { + type: 'group', + id: 'products', + icon: ShoppingBag, + labelKey: 'nav.products', + basePath: '/products', + moduleId: 'products', + children: [ + { labelKey: 'nav.products.overview', to: '/products' }, + { labelKey: 'nav.products.list', to: '/products/list' }, + { labelKey: 'nav.products.new', to: '/products/new' }, + { labelKey: 'nav.products.categories', to: '/products/categories' }, + { labelKey: 'nav.products.brands', to: '/products/brands' }, + { labelKey: 'nav.products.settings', to: '/products/settings' }, + ], + }, + { + type: 'group', + id: 'store', + icon: Store, + labelKey: 'nav.store', + basePath: '/store', + moduleId: 'store', + children: [ + { labelKey: 'nav.store.overview', to: '/store' }, + { labelKey: 'nav.store.items', to: '/store/items' }, + { labelKey: 'nav.store.orders', to: '/store/orders' }, + { labelKey: 'nav.store.shipping', to: '/store/shipping' }, + { labelKey: 'nav.store.cards', to: '/store/cards' }, + { labelKey: 'nav.store.settings', to: '/store/settings' }, + ], + }, + { type: 'link', id: 'customers', icon: Users, labelKey: 'nav.customers', to: '/customers' }, + { + type: 'group', + id: 'blog', + icon: FileText, + labelKey: 'nav.blog', + basePath: '/blog', + moduleId: 'blog', + children: [ + { labelKey: 'nav.blog.overview', to: '/blog' }, + { labelKey: 'nav.blog.list', to: '/blog/list' }, + { labelKey: 'nav.blog.new', to: '/blog/new' }, + { labelKey: 'nav.blog.categories', to: '/blog/categories' }, + { labelKey: 'nav.blog.settings', to: '/blog/settings' }, + ], + }, + { + type: 'group', + id: 'portfolios', + icon: Briefcase, + labelKey: 'nav.portfolios', + basePath: '/portfolios', + moduleId: 'portfolio', + children: [ + { labelKey: 'nav.portfolios.overview', to: '/portfolios' }, + { labelKey: 'nav.portfolios.list', to: '/portfolios/list' }, + { labelKey: 'nav.portfolios.new', to: '/portfolios/new' }, + { labelKey: 'nav.portfolios.categories', to: '/portfolios/categories' }, + { labelKey: 'nav.portfolios.settings', to: '/portfolios/settings' }, + ], + }, + { + type: 'group', + id: 'website', + icon: Globe, + labelKey: 'nav.website', + basePath: '/website', + children: [ + { labelKey: 'nav.website.overview', to: '/website' }, + { labelKey: 'nav.website.sliders', to: '/website/sliders' }, + { labelKey: 'nav.website.specialCategories', to: '/website/special-categories' }, + { labelKey: 'nav.website.specialBrands', to: '/website/special-brands' }, + { labelKey: 'nav.website.specialItems', to: '/website/special-items' }, + { labelKey: 'nav.website.contact', to: '/website/contact' }, + { labelKey: 'nav.website.subscriptions', to: '/website/subscriptions' }, + { labelKey: 'nav.website.faq', to: '/website/faq' }, + { labelKey: 'nav.website.badges', to: '/website/badges' }, + { labelKey: 'nav.website.ePayment', to: '/website/e-payment' }, + ], + }, + { type: 'link', id: 'settings', icon: Settings, labelKey: 'nav.settings', to: '/settings' }, + ] + + return items.filter( + (item) => !item.moduleId || hasBusinessModule(enabledModules, item.moduleId), + ) + }, [enabledModules]) useEffect(() => { const controller = new AbortController()