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 Minimal Theme Laravel Package

dillingham/nova-minimal-theme

A minimal, clean theme for Laravel Nova that strips back the default admin interface for a simpler, less cluttered experience. Lightweight styling tweaks keep Nova's functionality intact while giving the dashboard a quieter, distraction-free look.

View on GitHub
Deep Wiki
Context7

Getting Started

Install and register (5 minutes, if versions line up):

composer require dillingham/nova-minimal-theme

Then read the package before wiring anything up — you need three facts that differ between Nova generations:

  1. How it registers. Look at vendor/dillingham/nova-minimal-theme/composer.json for extra.laravel.providers (auto-discovery) or a manual provider. If there's a provider, check whether it calls Nova::theme(), Nova::style(), or just publishes assets.
  2. Where the CSS lives. vendor/dillingham/nova-minimal-theme/resources/ — usually a single .css/.less file plus optional images/fonts.
  3. Which Nova version it targets. Last release was 2019-04-27, so this is a Nova 1.x/2.x-era theme. Check the require block for laravel/nova.

If it's the classic config-key style, registration is one line in config/nova.php:

'theme' => 'dillingham/nova-minimal-theme',

If it exposes a provider instead, add the theme in app/Providers/NovaServiceProvider.php:

public function boot()
{
    parent::boot();

    Nova::theme('dillingham/nova-minimal-theme'); // shape depends on Nova version
}

Then publish anything the provider declares:

php artisan vendor:publish --provider="Dillingham\NovaMinimalTheme\ThemeServiceProvider"
php artisan nova:publish

First use case: internal admin panels where Nova's default chrome (heavy sidebar, large type, generous padding) wastes screen real estate. The win is density — more rows of resource data per viewport — not branding. Log in, open any resource index, and confirm the theme's stylesheet actually appears in the <head> before you conclude anything else.

Where to look first when it doesn't work: open DevTools → Network → filter CSS. If the theme file 404s, it's a publish/asset-path problem. If it 200s but nothing changed, it's a selector mismatch against your Nova version.

Implementation Patterns

Treat it as a CSS layer, not an application dependency. The theme should be the last stylesheet loaded so your own rules win without !important wars. If the package registers early, append your overrides via Nova::style() in your own NovaServiceProvider:

Nova::style('css/nova-overrides.css', __DIR__.'/../public');

Gate it by environment. Nobody wants a half-supported theme on production:

public function boot()
{
    parent::boot();

    if (app()->environment(['local', 'staging'])) {
        Nova::theme('dillingham/nova-minimal-theme');
    }
}

Get "minimal" from Nova config, not just CSS. Most of what people want from a minimal theme is achievable natively and survives upgrades: Nova::brand(), Nova::logo(), $displayInNavigation = false on noisy resources, resource groups, Lens for filtered index views, and $perPage/column tuning. Use the theme only for spacing, borders, and type scale.

Per-project customisation: don't edit vendor/. Copy the theme's stylesheet into resources/css/nova-theme.css, adjust, and register that with Nova::style(). You get an audit trail, version control, and immunity to composer update wiping your tweaks.

Custom tools and cards need defensive scoping. The theme's global element selectors (.sidebar, .content, bare h1/table) will bleed into your custom Vue tool components. Wrap tool markup in a namespaced root class and reset inside it:

.my-tool, .my-tool * { box-sizing: border-box; }
.my-tool h1 { font-size: 1.25rem; } /* defend against theme rules */

Migration plan for Nova 4+: Nova 4 moved to Vite with php artisan nova:theme, a different asset pipeline, and largely renamed CSS classes. Plan to reimplement the visual rules in a Nova 4 theme scaffold rather than patch this package — budget half a day for a small theme, more if it customises layouts.

If you decide to fork (MIT license makes this cheap): vendor the source into nova-components/minimal-theme/, or just inline the CSS. For a 13-star, 2019 package, inlining is often the correct engineering call.

Gotchas and Tips

  • Version compatibility is the whole ballgame. A 2019 release predates Nova 3's asset changes and Nova 4's Vite migration entirely. Expect it to be broken or inert on anything current. Verify against your installed laravel/nova version before writing code.
  • Composer won't protect you. Theme packages rarely constrain against Nova majors, so composer require will happily install a theme that targets a Nova you don't have. Pin both explicitly.
  • Silent degradation, not errors. Nova renames/restructures its CSS classes between minors. The theme still loads, no console warnings, it just stops applying to half the UI. Symptom: "the sidebar got fat again after composer update."
  • Caching will waste an hour of your life. After any change: hard refresh (Cmd/Ctrl-Shift-R), php artisan view:clear, php artisan nova:publish, and check config/nova.php isn't cached via config:cache. Nova's compiled CSS is aggressively cached.
  • Don't rebuild Nova's assets. npm run prod in your app doesn't touch Nova's frontend. If the theme is a separate stylesheet, keep it that way — mixing the two produces a confusing hybrid build.
  • Debugging technique: in DevTools, select the offending element and read the Computed panel's rule origin. If the winning rule comes from app.css (Nova core) rather than your theme file, either the theme file loads too early or the selector changed. Fix by loading order first, selector specificity second.
  • Extension point: the cleanest hook is your own NovaServiceProvider::boot() — extend the theme's provider, or bypass it entirely and register the CSS yourself. Very few themes of this vintage have meaningful runtime hooks beyond asset registration.
  • Check the license/attribution expectations before stripping comments or redistributing; MIT requires the copyright notice, which matters if you vendor the CSS.
  • Cost/benefit: with 13 stars and no release since 2019, weigh "add a dependency" against "add 40 lines of CSS to NovaServiceProvider." For a minimal theme, the latter usually wins — and it will never conflict with a Nova upgrade.
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.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums