Nova Menu Advanced
Visit this package on GitHub

Customize Menu And Icons

You can use the MenuGroup and MenuItem icons as label by invoking the asLabel method.

use NormanHuth\NovaMenu\MenuGroup;
use NormanHuth\NovaMenu\MenuItem;
 
Nova::mainMenu(function (Request $request) {
return [
//..
MenuGroup::make(__('Licensing'), [])
->asLabel(),
MenuItem::resource(User::class)
->asLabel(),
//..
]
});

You can control the gutter between icon and label by invoking the asLabel method.

Default: 1 (0.25rem)

Method Gap
->asLabel(0.5) 0.125rem
->asLabel(1.5) 0.375rem
->asLabel(2) 0.5rem
->asLabel(2.5) 0.625rem
->asLabel(3) 0.75rem
->asLabel(3.5) 0.875rem
->asLabel(4) 1rem
->asLabel(5) 1.25rem
->asLabel(6) 1.5rem
->asLabel(8) 2rem
use NormanHuth\NovaMenu\MenuGroup;
use NormanHuth\NovaMenu\MenuItem;
 
Nova::mainMenu(function (Request $request) {
return [
//..
MenuGroup::make(__('Licensing'), [])
->asLabel(2),
MenuItem::resource(User::class)
->asLabel(3.5),
//..
]
});

You can change the icon height by invoking the iconHeight method.

(Value int in Pixel. Possible from 4 to 32 pixels)

use NormanHuth\NovaMenu\MenuSection;
use NormanHuth\NovaMenu\MenuGroup;
use NormanHuth\NovaMenu\MenuItem;
 
Nova::mainMenu(function (Request $request) {
return [
//..
MenuSection::make(__('Customers'), [])->iconHeight(24), // MenuSection: 24 default
MenuGroup::make(__('Licensing'), [])->iconHeight(18), // MenuGroup: 18 default
MenuItem::resource(User::class)->iconHeight(18), // MenuItem: 18 default
// ..
];
});

You can add classes attribute to the element by invoking the elemClasses method.

use NormanHuth\NovaMenu\MenuSection;
use NormanHuth\NovaMenu\MenuGroup;
use NormanHuth\NovaMenu\MenuItem;
 
Nova::mainMenu(function (Request $request) {
return [
//..
MenuSection::make(__('Customers'), [])
->elemClasses(['class-1', 'class-2']),
MenuGroup::make(__('Licensing'), [])
->elemClasses(['class-1', 'class-2']),
MenuItem::resource(User::class)
->elemClasses(['class-1', 'class-2']),
 
// Or as String
MenuSection::make(__('Customers'), [])
->elemClasses('class-1 class-2'),
MenuGroup::make(__('Licensing'), [])
->elemClasses('class-1 class-2'),
MenuItem::resource(User::class)
->elemClasses('class-1 class-2'),
//..
];
});

You can add classes attribute to the icon by invoking the iconClasses method.

use NormanHuth\NovaMenu\MenuSection;
use NormanHuth\NovaMenu\MenuGroup;
use NormanHuth\NovaMenu\MenuItem;
 
Nova::mainMenu(function (Request $request) {
return [
//..
MenuSection::make(__('Customers'), [])
->iconClasses(['class-1', 'class-2']),
MenuGroup::make(__('Licensing'), [])
->iconClasses(['class-1', 'class-2']),
MenuItem::resource(User::class)
->iconClasses(['class-1', 'class-2']),
 
// Or as String
MenuSection::make(__('Customers'), [])
->iconClasses('class-1 class-2'),
MenuGroup::make(__('Licensing'), [])
->iconClasses('class-1 class-2'),
MenuItem::resource(User::class)
->iconClasses('class-1 class-2'),
// ..
];
});

You can add classes attribute to the label by invoking the labelClasses method.

use NormanHuth\NovaMenu\MenuSection;
use NormanHuth\NovaMenu\MenuGroup;
use NormanHuth\NovaMenu\MenuItem;
 
Nova::mainMenu(function (Request $request) {
return [
//..
MenuSection::make(__('Customers'), [])
->labelClasses(['class-1', 'class-2']),
MenuGroup::make(__('Licensing'), [])
->labelClasses(['class-1', 'class-2']),
MenuItem::resource(User::class)
->labelClasses(['class-1', 'class-2']),
 
// Or as String
MenuSection::make(__('Customers'), [])
->labelClasses('class-1 class-2'),
MenuGroup::make(__('Licensing'), [])
->labelClasses('class-1 class-2'),
MenuItem::resource(User::class)
->labelClasses('class-1 class-2'),
// ..
];
});

Install all Tailwind CSS Text Color, Border Color and Background Color classes inclusive dark mode classes.

But beware. This file will be loaded 620KB more CSS!

php artisan nova-menu:tailwind-colors