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:
sdarbinyan
2026-07-18 08:59:29 +04:00
parent eb7b5c996d
commit 419cb9a32c
39 changed files with 1291 additions and 589 deletions

View File

@@ -720,7 +720,7 @@ export const en: Translations = {
actionAnalytics: 'Analytics',
actionPreviewMarketplace: 'Preview Marketplace',
activityTitle: 'Recent Activity',
activityEmpty: 'No activity yet. Save or publish a change to see it here.',
activityEmpty: 'No activity yet',
activityDraftSaved: 'Draft saved',
activityPublished: 'Published',
healthTitle: 'System Health',
@@ -734,6 +734,54 @@ export const en: Translations = {
comingSoonTitle: 'Coming soon',
comingSoonDescription: 'This section is not built yet. Check back in a future update.',
backToDashboard: 'Back to dashboard',
welcomeEyebrow: 'Welcome back',
welcomeFallbackTenant: 'Your marketplace',
envProduction: 'Production',
envDevelopment: 'Development',
factCurrentUser: 'Current user',
factTenant: 'Store',
quickActionsDescription: 'Your most common tasks - start here',
actionAddProduct: 'Add product',
actionAddProductDescription: 'Create a new product listing',
actionCreateCategory: 'Create category',
actionCreateCategoryDescription: 'Add a category to the catalog',
actionEditProjectDescription: 'Open the marketplace builder',
actionEditHomepage: 'Edit homepage',
actionEditHomepageDescription: 'Configure the homepage widgets',
actionMediaLibraryDescription: 'Upload and organize files',
actionOrdersDescription: 'Review recent orders',
draftStatusTitle: 'Draft status',
draftStatusHasChanges: 'There are unpublished changes waiting to go live.',
draftStatusAllPublished: 'Everything published. No draft in progress.',
draftStatusMoreFields: '+{{count}} more',
draftOpenBuilder: 'Open builder',
draftPublish: 'Publish',
draftDiscard: 'Discard draft',
healthProductsCount: 'Products',
healthCategoriesCount: 'Categories',
healthDraftExists: 'Draft',
healthImagesWithoutAlt: 'Images missing alt text',
healthStaticPagesUnpublished: 'Unpublished static pages',
healthHomepageConfigured: 'Homepage configured',
healthThemeConfigured: 'Theme configured',
statusHealthy: 'Healthy',
statusAttention: 'Needs attention',
statusUnhealthy: 'Issue',
statusUnknown: 'Not tracked yet',
activityEmptyHint: 'Save or publish a change to see it appear here.',
activityUnavailable: 'Activity history unavailable',
activityUnavailableHint: "Couldn't reach the activity data source. Try refreshing later.",
activityErrorHint: "Couldn't load recent activity.",
shortcutsTitle: 'Useful shortcuts',
shortcutsDescription: 'Frequently used destinations across the admin panel',
shortcutMarketplaceBuilder: 'Marketplace Builder',
shortcutSettings: 'Settings',
shortcutContent: 'Content',
docTitle: 'Documentation',
docDocumentation: 'Documentation',
docKeyboardShortcuts: 'Keyboard shortcuts',
docReportIssue: 'Report an issue',
docReleaseNotes: 'Release notes',
},
staticPages: {
notFound: 'Page not found',