feat: centralize breadcrumbs in topbar and remove history navigation

Move breadcrumb rendering from individual page templates into the core
topbar. Each page now sets $breadcrumbs in its action .php file; the
topbar renders it automatically via the shared partial.

- Remove global back/forward buttons and app-nav-history.js component
- Remove Alt+Arrow keyboard shortcuts for history navigation
- Render breadcrumb in topbar-left section (replaces button area)
- Clean up breadcrumb CSS: context-neutral base (flex, no margin)
- Recalculate sticky titlebar offset in details container
- Migrate all 41 pages (core + helpdesk, audit, addressbook, api-docs)
- Add missing breadcrumbs to addressbook detail view
- Update architecture contract tests (nav-history references removed)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-05 17:17:06 +02:00
parent 7220aa7459
commit b749b5d192
91 changed files with 231 additions and 436 deletions

View File

@@ -29,6 +29,11 @@ $csrfKey = Session::$csrfSessionKey;
$csrfToken = $session[$csrfKey] ?? '';
Buffer::set('title', t('Search results'));
$breadcrumbs = [
['label' => t('Home'), 'path' => 'admin'],
['label' => t('Search')],
];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
Buffer::set(
'grid_csrf',

View File

@@ -8,13 +8,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
<?php
$breadcrumbs = [
['label' => t('Home'), 'path' => 'admin'],
['label' => t('Search')],
];
require templatePath('partials/app-breadcrumb.phtml');
?>
<?php
$listTitle = t('Search results');
require templatePath('partials/app-list-titlebar.phtml');
?>