Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova Panels Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Getting Started

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.
  • Whether Nova’s native 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.

Implementation Patterns

  • Keep panel construction out of a giant fields() method. Use private methods like profilePanel(), billingPanel(), and relationshipsPanel() returning arrays of fields.
  • Group by user workflow, not by field type: “Identity”, “Contact”, “Preferences”, “Relationships”. This is the main day-to-day benefit for overloaded resources.
  • Put relationship fields in their own panel. It keeps long forms readable and makes it easier to hide/collapse heavy relationship sections later.
  • Use Nova field modifiers inside panels normally: ->rules(), ->canSee(), ->dependsOn(), ->hideFromIndex(), etc. Panels should be layout only; fields still own validation and visibility.
  • Build conditional panels in PHP when permissions differ, and also apply canSee() on sensitive child fields. Do not assume the panel wrapper enforces authorization.
  • Reuse panel builders through a base resource or trait if several resources share the same groups, but keep resource-specific fields explicit.
  • Keep index/search behavior separate. Panels are primarily useful on detail/form views; do not expect relationship panels to drive index columns or search.
  • Test relationship attach/detach and validation after moving relationship fields into panels. A layout change can expose assumptions about field ordering or visibility.

Gotchas and Tips

  • The biggest risk is maintenance: last release 2021, 3 stars, 0 dependents. Pin the package, inspect its Nova constraint, and prefer a fork or Nova-native panels/tabs if you are on a newer Nova version.
  • Watch for class-name collisions. SkoreLabs\NovaPanels\Panel and Laravel\Nova\Panel are easy to confuse; alias imports deliberately.
  • Panels do not improve performance. A detail page with many relationship panels can still be slow; eager-load carefully with $with, hide expensive relationships, or collapse sections if supported.
  • Do not duplicate the same field across multiple panels. Nova can render duplicate inputs and validation behavior can become confusing.
  • Empty panels may still render. If a panel’s fields are all hidden by canSee(), hide the panel itself or filter it out before returning fields().
  • Relationship fields inside panels may behave differently from top-level relationship fields, especially outside detail views. Verify each target view.
  • If layout changes do not appear, clear caches/compiled views and check whether the package exposes publishable views/config. If there is no extension point, fork under MIT and use a Composer path/VCS repository.
  • Debug by reducing to one panel, comparing against native Laravel\Nova\Panel, inspecting vendor/skorelabs/nova-panels, and checking rendered HTML/Blade.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource