63 lines
3.0 KiB
TypeScript
63 lines
3.0 KiB
TypeScript
|
|
export interface AdminNavLink {
|
||
|
|
type: 'link';
|
||
|
|
id: string;
|
||
|
|
icon: string;
|
||
|
|
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: string;
|
||
|
|
labelKey: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
export type AdminNavEntry = AdminNavLink | AdminNavGroup | AdminNavAction;
|
||
|
|
|
||
|
|
export const ADMIN_NAV_PRIMARY: AdminNavEntry[] = [
|
||
|
|
{ type: 'link', id: 'dashboard', icon: 'pi-home', labelKey: 'adminShell.nav.dashboard', path: ['dashboard'] },
|
||
|
|
{ type: 'group', labelKey: 'adminShell.nav.catalogGroup' },
|
||
|
|
{ type: 'link', id: 'products', icon: 'pi-box', labelKey: 'adminShell.nav.products', path: ['products'] },
|
||
|
|
{ type: 'link', id: 'categories', icon: 'pi-tags', labelKey: 'adminShell.nav.categories', path: ['categories'] },
|
||
|
|
{ type: 'link', id: 'orders', icon: 'pi-shopping-cart', labelKey: 'adminShell.nav.orders', path: ['orders'] },
|
||
|
|
{ type: 'link', id: 'transactions', icon: 'pi-credit-card', labelKey: 'adminShell.nav.transactions', path: ['transactions'] },
|
||
|
|
{ type: 'link', id: 'reviews', icon: 'pi-star', labelKey: 'adminShell.nav.reviews', comingSoon: true },
|
||
|
|
{ type: 'link', id: 'reports', icon: 'pi-chart-bar', labelKey: 'adminShell.nav.reports', comingSoon: true },
|
||
|
|
{ type: 'link', id: 'content', icon: 'pi-file-edit', labelKey: 'adminShell.nav.content', absolutePath: ['edit', 'static-pages'] },
|
||
|
|
{ type: 'link', id: 'media', icon: 'pi-images', labelKey: 'adminShell.nav.mediaLibrary', path: ['media'] },
|
||
|
|
{ type: 'link', id: 'marketplace-builder', icon: 'pi-sitemap', labelKey: 'adminShell.nav.marketplaceBuilder', absolutePath: ['edit', 'general'] },
|
||
|
|
{ type: 'link', id: 'users', icon: 'pi-users', labelKey: 'adminShell.nav.users', path: ['users'] },
|
||
|
|
{ type: 'link', id: 'settings', icon: 'pi-cog', labelKey: 'adminShell.nav.settings', comingSoon: true },
|
||
|
|
{ type: 'link', id: 'monitoring', icon: 'pi-desktop', labelKey: 'adminShell.nav.monitoring', path: ['monitoring'] },
|
||
|
|
{ type: 'link', id: 'analytics', icon: 'pi-chart-line', labelKey: 'adminShell.nav.analytics', path: ['analytics'] },
|
||
|
|
];
|
||
|
|
|
||
|
|
export const ADMIN_NAV_BOTTOM: AdminNavEntry[] = [
|
||
|
|
{ type: 'link', id: 'documentation', icon: 'pi-book', labelKey: 'adminShell.nav.documentation', comingSoon: true },
|
||
|
|
{ type: 'link', id: 'help', icon: 'pi-question-circle', labelKey: 'adminShell.nav.help', comingSoon: true },
|
||
|
|
{ type: 'action', id: 'logout', icon: 'pi-sign-out', 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[];
|
||
|
|
}
|