import { AppIconName } from '../../../shared/ui/icon/icon-registry'; export interface AdminNavLink { type: 'link'; id: string; icon: AppIconName; labelKey: string; /** Segments appended to /:lang/backoffice/. Mutually exclusive with absolutePath. */ path?: string[]; /** Segments appended to /:lang/ directly (routes outside /backoffice, e.g. the project editor). */ absolutePath?: string[]; /** No route exists yet - rendered as a disabled item with a "coming soon" badge. */ comingSoon?: boolean; } export interface AdminNavGroup { type: 'group'; labelKey: string; } export interface AdminNavAction { type: 'action'; id: string; icon: AppIconName; labelKey: string; } export type AdminNavEntry = AdminNavLink | AdminNavGroup | AdminNavAction; export const ADMIN_NAV_PRIMARY: AdminNavEntry[] = [ { type: 'link', id: 'dashboard', icon: 'home', labelKey: 'adminShell.nav.dashboard', path: ['dashboard'] }, { type: 'group', labelKey: 'adminShell.nav.catalogGroup' }, { type: 'link', id: 'products', icon: 'package', labelKey: 'adminShell.nav.products', path: ['products'] }, { type: 'link', id: 'categories', icon: 'tags', labelKey: 'adminShell.nav.categories', path: ['categories'] }, { type: 'link', id: 'orders', icon: 'cart', labelKey: 'adminShell.nav.orders', path: ['orders'] }, { type: 'link', id: 'customers', icon: 'user', labelKey: 'adminShell.nav.customers', path: ['customers'] }, { type: 'link', id: 'transactions', icon: 'creditCard', labelKey: 'adminShell.nav.transactions', path: ['transactions'] }, { type: 'link', id: 'moderation', icon: 'star', labelKey: 'adminShell.nav.moderation', path: ['moderation'] }, { type: 'link', id: 'reports', icon: 'chartBar', labelKey: 'adminShell.nav.reports', comingSoon: true }, { type: 'link', id: 'content', icon: 'edit', labelKey: 'adminShell.nav.content', absolutePath: ['edit', 'static-pages'] }, { type: 'link', id: 'media', icon: 'images', labelKey: 'adminShell.nav.mediaLibrary', path: ['media'] }, { type: 'link', id: 'marketplace-builder', icon: 'network', labelKey: 'adminShell.nav.marketplaceBuilder', absolutePath: ['edit'] }, { type: 'link', id: 'users', icon: 'users', labelKey: 'adminShell.nav.users', path: ['users'] }, { type: 'link', id: 'settings', icon: 'settings', labelKey: 'adminShell.nav.settings', comingSoon: true }, { type: 'link', id: 'monitoring', icon: 'monitor', labelKey: 'adminShell.nav.monitoring', path: ['monitoring'] }, { type: 'link', id: 'analytics', icon: 'chartLine', labelKey: 'adminShell.nav.analytics', path: ['analytics'] }, ]; export const ADMIN_NAV_BOTTOM: AdminNavEntry[] = [ { type: 'link', id: 'documentation', icon: 'book', labelKey: 'adminShell.nav.documentation', comingSoon: true }, { type: 'link', id: 'help', icon: 'help', labelKey: 'adminShell.nav.help', comingSoon: true }, { type: 'action', id: 'logout', icon: 'logOut', labelKey: 'adminShell.nav.logout' }, ]; export interface AdminBreadcrumbEntry { labelKey: string; /** Segments appended to /:lang/backoffice/. Omitted on the last (current) crumb. */ path?: string[]; } export interface AdminPageData { titleKey: string; descriptionKey: string; breadcrumb: AdminBreadcrumbEntry[]; }