skorelabs/nova-panels
skorelabs/nova-panels adds configurable panels to Laravel Nova, letting you group resources, dashboards, and tools into separate sections for cleaner navigation and tailored admin experiences. Simple setup and flexible panel definitions help organize large Nova applications.
Treat skorelabs/nova-panels as a Nova UI composition helper: it is for grouping large resource field/relationship sets into panels, not for changing queries, authorization, or relationship behavior.
Start by checking:
README.md for the exact panel class/API and any Nova version constraint.composer.json for the supported laravel/nova version. A 2021 release likely targets Nova 3; do not assume Nova 4/5 compatibility.src/ and resources/views for the panel implementation and Blade overrides.Laravel\Nova\Panel already solves the problem; this package is niche and low-adoption.Minimal first use case: pick one resource with many fields and several relationships, e.g. a User resource. Import the package panel class, alias it to avoid collision with Nova’s native Panel, and group fields by user task:
use SkoreLabs\NovaPanels\Panel as NovaPanel;
public function fields(Request $request)
{
return [
NovaPanel::make('Profile', [
Text::make('Name'),
Text::make('Email'),
]),
NovaPanel::make('Relationships', [
HasMany::make('Posts'),
BelongsToMany::make('Roles'),
]),
];
}
Confirm the exact class/API in the README before assuming Panel::make(...). Then verify create, update, detail, and validation flows on that one resource before rolling it out.
fields() method. Use private methods like profilePanel(), billingPanel(), and relationshipsPanel() returning arrays of fields.->rules(), ->canSee(), ->dependsOn(), ->hideFromIndex(), etc. Panels should be layout only; fields still own validation and visibility.canSee() on sensitive child fields. Do not assume the panel wrapper enforces authorization.SkoreLabs\NovaPanels\Panel and Laravel\Nova\Panel are easy to confuse; alias imports deliberately.$with, hide expensive relationships, or collapse sections if supported.canSee(), hide the panel itself or filter it out before returning fields().Laravel\Nova\Panel, inspecting vendor/skorelabs/nova-panels, and checking rendered HTML/Blade.How can I help you explore Laravel packages today?