feat(admin): sprint 19 admin dashboard, routing, i18n

- Add admin dashboard feature (models/gateway/facade/components/page)
- Wire admin/products routes and backoffice coming-soon placeholders
- Add lastPublishedAt to ProjectEditorFacade/state
- Add dashboard i18n keys (en/ru/hy) and docs/ADMIN.md

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
sdarbinyan
2026-07-14 12:21:33 +04:00
parent 6aec2ebcb2
commit 325dc17911
36 changed files with 1386 additions and 5 deletions

View File

@@ -30,6 +30,7 @@ export class ProjectEditorFacade {
status: 'draft',
lastSavedBootstrap: null,
lastSavedAt: null,
lastPublishedAt: null,
draftRestored: false,
});
@@ -40,6 +41,7 @@ export class ProjectEditorFacade {
readonly homepageWidgets = computed(() => this.homepagePage()?.sections.flatMap(section => section.widgets.map(widget => ({ sectionId: section.id, sectionType: section.type, widget }))) ?? []);
readonly status = computed(() => this.state().status);
readonly lastSavedAt = computed(() => this.state().lastSavedAt);
readonly lastPublishedAt = computed(() => this.state().lastPublishedAt);
readonly draftRestored = computed(() => this.state().draftRestored);
readonly validationIssues = computed(() => {
const current = this.bootstrap();
@@ -182,6 +184,7 @@ export class ProjectEditorFacade {
lastSavedBootstrap: JSON.parse(JSON.stringify(current)),
originalBootstrap: JSON.parse(JSON.stringify(current)),
lastSavedAt: savedAt,
lastPublishedAt: savedAt,
}));
return true;
}