feat(admin): redesign dashboard into professional SaaS homepage
Replaced the placeholder dashboard with a real business homepage built on 6 new reusable widget components (DashboardSection, DashboardCard, DashboardMetric, DashboardStatusRow, DashboardTimeline, DashboardShortcutCard), all wired through shared app-card/app-skeleton/ app-empty-state. Sections: Welcome (tenant, env badge, current user, last publish/save - all real facade signals, never blank), Quick Actions (large cards: add product, create category, open builder, edit homepage, media, orders), Draft Status (real dirty/modifiedFields/publish/discard from ProjectEditorFacade), Marketplace Health (9 checks - config, product/ category counts, missing translations, draft, static-pages-unpublished, homepage/theme configured, all real; images-without-alt shown as 'not tracked yet' rather than fabricated), Recent Activity (existing localStorage-backed history service, loading/empty states), Useful Shortcuts, Documentation (honest coming-soon list, no dead links). 12-column responsive grid: 3-across cards on desktop, 2-column on tablet, single column on mobile, no horizontal scroll. Keyboard/focus/ ARIA per shortcut card and status row; health status never conveyed by color alone (icon + text every time). AdminDashboardHealthCheck (boolean 'healthy' shape) and its facade signal are untouched - AdminMonitoringPageComponent also consumes them. New richer status data lives in a separate homeHealthChecks signal/ AdminDashboardHomeHealthCheck type instead of widening the shared one. Added ~50 new dashboard.* / kept existing i18n strings across ru/en/hy; no raw keys. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -732,6 +732,54 @@ export interface Translations {
|
||||
comingSoonTitle: string;
|
||||
comingSoonDescription: string;
|
||||
backToDashboard: string;
|
||||
welcomeEyebrow: string;
|
||||
welcomeFallbackTenant: string;
|
||||
envProduction: string;
|
||||
envDevelopment: string;
|
||||
factCurrentUser: string;
|
||||
factTenant: string;
|
||||
quickActionsDescription: string;
|
||||
actionAddProduct: string;
|
||||
actionAddProductDescription: string;
|
||||
actionCreateCategory: string;
|
||||
actionCreateCategoryDescription: string;
|
||||
actionEditProjectDescription: string;
|
||||
actionEditHomepage: string;
|
||||
actionEditHomepageDescription: string;
|
||||
actionMediaLibraryDescription: string;
|
||||
actionOrdersDescription: string;
|
||||
draftStatusTitle: string;
|
||||
draftStatusHasChanges: string;
|
||||
draftStatusAllPublished: string;
|
||||
draftStatusMoreFields: string;
|
||||
draftOpenBuilder: string;
|
||||
draftPublish: string;
|
||||
draftDiscard: string;
|
||||
healthProductsCount: string;
|
||||
healthCategoriesCount: string;
|
||||
healthDraftExists: string;
|
||||
healthImagesWithoutAlt: string;
|
||||
healthStaticPagesUnpublished: string;
|
||||
healthHomepageConfigured: string;
|
||||
healthThemeConfigured: string;
|
||||
statusHealthy: string;
|
||||
statusAttention: string;
|
||||
statusUnhealthy: string;
|
||||
statusUnknown: string;
|
||||
activityEmptyHint: string;
|
||||
activityUnavailable: string;
|
||||
activityUnavailableHint: string;
|
||||
activityErrorHint: string;
|
||||
shortcutsTitle: string;
|
||||
shortcutsDescription: string;
|
||||
shortcutMarketplaceBuilder: string;
|
||||
shortcutSettings: string;
|
||||
shortcutContent: string;
|
||||
docTitle: string;
|
||||
docDocumentation: string;
|
||||
docKeyboardShortcuts: string;
|
||||
docReportIssue: string;
|
||||
docReleaseNotes: string;
|
||||
};
|
||||
staticPages: {
|
||||
notFound: string;
|
||||
|
||||
Reference in New Issue
Block a user