feat: IconGridSelect, CrossLink, SearchPalette components + entity crosslinks

New components:
- IconGridSelect: Visual grid selector replacing <select> dropdowns,
  with icon + label cells, fixed-position popup, smart placement
- CrossLink: Inline clickable badge for cross-entity navigation,
  hover highlights primary, used on entity cards
- SearchPalette: Ctrl+K global command palette, searches all entity
  types via cached data, grouped results, keyboard navigation

Integration:
- Targets: type selector uses IconGridSelect (4-column grid with icons)
- Targets: bot crosslink on telegram/email/matrix target cards
- Command Trackers: provider and config badges → CrossLinks
- Command Trackers: listener bot name → CrossLink
- Command Configs: template config shown as CrossLink on card
- Notification Trackers: provider CrossLink added to card
- Layout: SearchPalette mounted globally

Infrastructure:
- Added CommandConfig, CommandTemplateConfig, CommandTracker types
- Added notificationTrackersCache, commandTrackersCache to caches
- Added allCaches map and fetchAllCaches() for search palette
- Added searchPalette i18n keys (EN/RU)
This commit is contained in:
2026-03-21 23:44:12 +03:00
parent 563716fa76
commit 06b24638cb
12 changed files with 764 additions and 26 deletions
+8
View File
@@ -699,5 +699,13 @@
"undefinedVar": "Unknown variable",
"line": "line",
"add": "Add"
},
"searchPalette": {
"placeholder": "Search entities...",
"noResults": "No results found",
"typeToSearch": "Start typing to search",
"navigate": "navigate",
"open": "open",
"close": "close"
}
}
+8
View File
@@ -699,5 +699,13 @@
"undefinedVar": "Неизвестная переменная",
"line": "строка",
"add": "Добавить"
},
"searchPalette": {
"placeholder": "Поиск объектов...",
"noResults": "Ничего не найдено",
"typeToSearch": "Начните вводить для поиска",
"navigate": "навигация",
"open": "открыть",
"close": "закрыть"
}
}