feat(admin): build shared admin shell
Sidebar (Dashboard/Catalog group/Products/Categories/Orders/Transactions/ Reviews/Reports/Content/Media/Marketplace Builder/Users/Settings/ Monitoring/Analytics + Documentation/Help/Logout), sticky topbar (breadcrumbs, page title/description, search, notifications, tenant selector and quick-publish placeholders, current user), reserved right-rail slot, scrollable content area. Desktop 280px sidebar, tablet icon rail, mobile drawer with focus management and Escape-to-close. Nav items without a built page (Reviews, Reports, Settings, Docs, Help) render disabled with a coming-soon badge instead of dead links; Content and Marketplace Builder route to the existing project-editor pages (static-pages / general) rather than duplicating them. All 15 /backoffice/** routes now render through AdminLayoutComponent; the public storefront header/back-button/footer no longer render on admin routes (app.ts/app.html gate on a new isAdminRoute signal). Added the adminShell i18n namespace (ru/en/hy) for every new shell string so this doesn't add to the existing untranslated-admin-UI gap tracked in KNOWN-ISSUES.md. Colors/type sizes follow DESIGN.md tokens; the two rgba() modal-scrim values are a documented, intentional exception (neutral overlay, not a themed token). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -967,4 +967,61 @@ export interface Translations {
|
||||
topProductsEmptyTitle: string;
|
||||
topProductsEmptyDescription: string;
|
||||
};
|
||||
adminShell: {
|
||||
skipToContent: string;
|
||||
openSidebar: string;
|
||||
closeSidebar: string;
|
||||
collapseSidebar: string;
|
||||
expandSidebar: string;
|
||||
nav: {
|
||||
dashboard: string;
|
||||
catalogGroup: string;
|
||||
products: string;
|
||||
categories: string;
|
||||
orders: string;
|
||||
transactions: string;
|
||||
reviews: string;
|
||||
reports: string;
|
||||
content: string;
|
||||
mediaLibrary: string;
|
||||
marketplaceBuilder: string;
|
||||
users: string;
|
||||
settings: string;
|
||||
monitoring: string;
|
||||
analytics: string;
|
||||
documentation: string;
|
||||
help: string;
|
||||
logout: string;
|
||||
comingSoonBadge: string;
|
||||
};
|
||||
topbar: {
|
||||
searchLabel: string;
|
||||
searchPlaceholder: string;
|
||||
notifications: string;
|
||||
notificationsEmpty: string;
|
||||
account: string;
|
||||
tenantSelector: string;
|
||||
tenantSelectorComingSoon: string;
|
||||
quickPublish: string;
|
||||
quickPublishComingSoon: string;
|
||||
};
|
||||
breadcrumbHome: string;
|
||||
pages: {
|
||||
dashboard: { title: string; description: string };
|
||||
products: { title: string; description: string };
|
||||
productCreate: { title: string; description: string };
|
||||
productEdit: { title: string; description: string };
|
||||
productDuplicate: { title: string; description: string };
|
||||
categories: { title: string; description: string };
|
||||
categoryCreate: { title: string; description: string };
|
||||
categoryEdit: { title: string; description: string };
|
||||
orders: { title: string; description: string };
|
||||
orderDetail: { title: string; description: string };
|
||||
transactions: { title: string; description: string };
|
||||
media: { title: string; description: string };
|
||||
users: { title: string; description: string };
|
||||
monitoring: { title: string; description: string };
|
||||
analytics: { title: string; description: string };
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user