1010use EasyCorp \Bundle \EasyAdminBundle \Config \Crud ;
1111use EasyCorp \Bundle \EasyAdminBundle \Config \Dashboard ;
1212use EasyCorp \Bundle \EasyAdminBundle \Config \MenuItem ;
13+ use EasyCorp \Bundle \EasyAdminBundle \Config \Theme ;
1314use EasyCorp \Bundle \EasyAdminBundle \Controller \AbstractDashboardController ;
1415use EasyCorp \Bundle \EasyAdminBundle \Router \AdminUrlGenerator ;
1516use Symfony \Component \HttpFoundation \Response ;
@@ -39,7 +40,12 @@ public function configureDashboard(): Dashboard
3940 return Dashboard::new ()
4041 ->setTitle ('<img src="/img/itk-sites-logo.png" width="170px" alt="ITK sites logo"> ' )
4142 ->setFaviconPath ('img/favicon.ico ' )
42- ->renderContentMaximized ();
43+ ->renderContentMaximized ()
44+ // ITK blue. Since EasyAdmin 5.4 one primary colour drives buttons,
45+ // links, the active sidebar item and boolean badges, and the theme
46+ // computes the text colour that sits on top of it — which the
47+ // stylesheet used to approximate variable by variable.
48+ ->setTheme (Theme::new ()->primaryColor ('#007ba6 ' ));
4349 }
4450
4551 #[\Override]
@@ -56,7 +62,9 @@ public function configureMenuItems(): iterable
5662 yield MenuItem::section ('Dependencies ' );
5763 yield MenuItem::linkTo (PackageCrudController::class, 'Packages ' , 'fas fa-cube ' );
5864 yield MenuItem::linkTo (PackageVersionCrudController::class, 'Package Versions ' , 'fas fa-cubes ' );
59- yield MenuItem::linkTo (AdvisoryCrudController::class, 'Advisories ' , 'fas fa-skull-crossbones ' )->setBadge ($ this ->advisoryRepository ->count ([]), 'dark ' );
65+ // `?: null` because EasyAdmin hides a badge whose content is null but
66+ // renders a literal "0" for a zero count, which is noise on a menu item.
67+ yield MenuItem::linkTo (AdvisoryCrudController::class, 'Advisories ' , 'fas fa-skull-crossbones ' )->setBadge ($ this ->advisoryRepository ->count ([]) ?: null , 'dark ' );
6068 yield MenuItem::linkTo (ModuleCrudController::class, 'Modules ' , 'fas fa-cube ' );
6169 yield MenuItem::linkTo (ModuleVersionCrudController::class, 'Modules Versions ' , 'fas fa-cubes ' );
6270 yield MenuItem::linkTo (DockerImageCrudController::class, 'Docker Images ' , 'fas fa-cube ' );
@@ -67,6 +75,20 @@ public function configureMenuItems(): iterable
6775 yield MenuItem::linkTo (DetectionResultCrudController::class, 'Detection Results ' , 'fas fa-upload ' );
6876 }
6977
78+ /**
79+ * The admin styles reach admin pages only from here.
80+ *
81+ * EasyAdmin renders its own layout rather than templates/base.html.twig, so
82+ * neither `importmap()` nor that template's Encore tags apply to it. Until
83+ * now this method added `css/admin.css`, a file deleted in #81, so every
84+ * admin page carried a 404 and none of the ITK styling below it.
85+ */
86+ #[\Override]
87+ public function configureAssets (): Assets
88+ {
89+ return Assets::new ()->addWebpackEncoreEntry ('admin ' );
90+ }
91+
7092 #[\Override]
7193 public function configureCrud (): Crud
7294 {
@@ -77,10 +99,4 @@ public function configureCrud(): Crud
7799 ->setPageTitle ('detail ' , '%entity_label_singular%: %entity_as_string% ' )
78100 ;
79101 }
80-
81- #[\Override]
82- public function configureAssets (): Assets
83- {
84- return Assets::new ()->addCssFile ('css/admin.css ' );
85- }
86102}
0 commit comments