feat(redesign): project mockup richness onto live dashboard

Bringing the Aurora dashboard mockup to feature parity in the real app:

- NavIcon component: thin-stroke SVG icon set covering ~30 nav-tier
  glyphs (dashboard, server, target, radar, bots, console, email,
  matrix, webhook, slack, bullhorn, settings, theme, search, logout,
  chevrons, plus/arrow). Falls back to MdiIcon for unknown names so
  every existing usage keeps working.
- layout.svelte: sidebar nav swapped from MdiIcon to NavIcon — dropping
  the dense filled glyphs in favour of soft 1.6px outlines that match
  the mockup. Main container max-width bumped from 5xl (1024px) to
  7xl (1280px) so the dashboard finally gets to breathe.
- +page.svelte (dashboard): full rewrite of the markup to project
  every mockup section onto live data:
    * Editorial Hero — 'Tonight, everything is flowing.' with gradient
      italic emphasis, live/attention pill driven by failure count,
      and a big mono throughput meter (24h events, armed/total,
      providers, targets) on the right.
    * Stats — kept the 4-card grid, refined accent palette per card.
    * Two-column row — Signal stream (events with full routing trail:
      tracker → provider, gradient avatar tile per event-type) on the
      left, On-watch provider deck (per-provider activity bar fill +
      live/idle pulse, derived from recent_events) on the right.
    * Pulse panel wrapping the existing EventChart with the new title
      treatment.
    * Active wires — Sankey-style 'Tracker → Target' route summary
      derived from notificationTrackers.tracker_targets + targetsCache
      with event counts per route.
    * Compose band — gradient call-to-action strip with new-tracker CTA.
- i18n: en.json + ru.json get the full set of new dashboard keys
  (hero copy, panel titles, compose band, wires labels).

Build: 0 errors, 57 pre-existing warnings unchanged.
This commit is contained in:
2026-04-25 01:27:08 +03:00
parent d9ef3c6cc3
commit d3210fd5ea
5 changed files with 1223 additions and 241 deletions
+33 -1
View File
@@ -103,7 +103,39 @@
"last14days": "Последние 14 дней",
"event": "событие",
"events": "событий",
"noChartData": "Нет данных о событиях"
"noChartData": "Нет данных о событиях",
"live": "В эфире",
"attention": "Внимание",
"heroPrefix": "Сегодня",
"heroEmphasis": "всё",
"heroSuffix": "идёт по плану.",
"heroSummary": "{providers} провайдеров на связи, {armed} из {total} трекеров активны, {throughput} событий доставлено в {targets} каналов за сутки.",
"throughput24h": "пропускная способность · 24ч",
"eventsShort": "событий",
"armedShort": "активны",
"providersShort": "провайдеров",
"targetsShort": "каналов",
"trackersShort": "трекеров",
"streamTitle": "Поток",
"streamEmphasis": "сигналов",
"eventsLabel": "событий",
"onWatchTitle": "На",
"onWatchEmphasis": "слежении",
"noProviders": "Пока нет провайдеров.",
"addProvider": "Добавить",
"addProviderHint": "Подключите сервис, чтобы начать слежение",
"pulseTitle": "Пульс",
"pulseEmphasis": "· 14 дней",
"pulseSub": "События по дням",
"wiresTitle": "Активные",
"wiresEmphasis": "линии",
"wiresSub": "маршрутов",
"composeTitle": "Выберите источник, выберите канал.",
"composeEmphasis": "Свяжите.",
"composeSub": "Проведите путь от провайдера → трекер → шаблон → цель. Или вставьте webhook URL — остальное мы определим сами.",
"viewTrackers": "К трекерам",
"newTracker": "Новый трекер",
"eventsTotal": "Событий"
},
"providers": {
"title": "Провайдеры",