2026-01-18 18:57:06 +04:00
|
|
|
@if (checkingServer()) {
|
|
|
|
|
<div class="server-check-overlay">
|
2026-02-19 01:23:25 +04:00
|
|
|
<div class="spinner-large"></div>
|
2026-02-26 23:09:20 +04:00
|
|
|
<p>{{ 'app.connecting' | translate }}</p>
|
2026-01-18 18:57:06 +04:00
|
|
|
</div>
|
|
|
|
|
} @else if (!serverAvailable()) {
|
|
|
|
|
<div class="server-error-overlay">
|
2026-02-19 01:23:25 +04:00
|
|
|
<div class="error-icon">⚠️</div>
|
2026-02-26 23:09:20 +04:00
|
|
|
<h2>{{ 'app.serverUnavailable' | translate }}</h2>
|
|
|
|
|
<p>{{ 'app.serverError' | translate }}</p>
|
|
|
|
|
<button class="retry-btn" (click)="retryConnection()">{{ 'app.retryConnection' | translate }}</button>
|
2026-01-18 18:57:06 +04:00
|
|
|
</div>
|
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>
2026-07-18 00:12:19 +04:00
|
|
|
} @else if (isAdminRoute()) {
|
|
|
|
|
<router-outlet></router-outlet>
|
|
|
|
|
<app-telegram-login mode="admin" />
|
2026-02-19 01:23:25 +04:00
|
|
|
} @else {
|
2026-01-18 18:57:06 +04:00
|
|
|
<app-header></app-header>
|
|
|
|
|
<main class="main-content">
|
2026-03-06 18:40:58 +04:00
|
|
|
@if (!isHomePage()) {
|
|
|
|
|
<app-back-button />
|
|
|
|
|
}
|
2026-01-18 18:57:06 +04:00
|
|
|
<router-outlet></router-outlet>
|
|
|
|
|
</main>
|
2026-07-09 01:13:54 +04:00
|
|
|
<app-floating-notifications />
|
2026-06-21 23:42:39 +04:00
|
|
|
@defer (on viewport) {
|
|
|
|
|
<app-footer></app-footer>
|
|
|
|
|
} @placeholder {
|
|
|
|
|
<div class="footer-placeholder" aria-hidden="true"></div>
|
|
|
|
|
}
|
2026-06-19 01:57:27 +04:00
|
|
|
<!-- <app-telegram-login /> -->
|
2026-07-14 10:13:59 +04:00
|
|
|
<app-telegram-login mode="admin" />
|
2026-01-18 18:57:06 +04:00
|
|
|
}
|