In Filament, the default sidebar order is determined by the registration order of your navigation items and groups within your panel’s getNavigation() method or similar setup. By default, items can also be sorted by priority, but for precise manual ordering (like: single item "Dashboard", then group "Properties", then single item "Settings" at the bottom), you can define the order directly in your PanelProvider.
Here’s how you can structure your sidebar explicitly:
use Filament\Navigation\NavigationGroup;
use Filament\Navigation\NavigationItem;
public function getNavigation(): array
{
return [
// 1. Single "Dashboard" item at the top
NavigationItem::make()
->label('Dashboard')
->icon('heroicon-o-home')
->url(route('filament.admin.dashboard')),
// 2. "Properties" group with its items
NavigationGroup::make()
->label('Properties')
->items([
NavigationItem::make()
->label('Units')
->icon('heroicon-o-collection')
->url(route('filament.admin.units.index')),
NavigationItem::make()
->label('Tenants')
->icon('heroicon-o-user-group')
->url(route('filament.admin.tenants.index')),
]),
// 3. Single "Settings" item at the bottom
NavigationItem::make()
->label('Settings')
->icon('heroicon-o-cog')
->url(route('filament.admin.settings.index')),
];
}
Key points:
- The order in the returned array determines the order in the sidebar.
- Navigation groups (
NavigationGroup::make()) allow you to group items in the sidebar. - Avoid using
->sort()or priority numbers if you want full manual control. - If using resource navigation, you may need to disable default registration (
static::$registerNavigation = falsein your resource) and add custom items instead.
Reference:
Filament Docs – Custom Navigation
Summary: Manually return the items or groups in the order you want inside getNavigation(). This gives you complete control over the sidebar layout.