yassi/nova-graphique-theme
A Graphique theme for Laravel Nova that gives your admin panel a polished, modern visual style. Install via Composer to refresh Nova’s interface with custom theme styling for a cleaner, more distinctive dashboard experience.
Before touching anything, verify whether this package can even load in your Nova install. A 2019-02-26 release predates Nova 2.0; if your app runs Nova 2, 3, 4, or 5, expect CSS/layout regressions or a hard failure at boot. Check composer.json in the package for its illuminate/* and laravel/nova constraints before composer require — if it hard-pins laravel/nova: ~1.0, stop and consider a fork.
Minimal steps for a Nova 1.x codebase:
composer require yassi/nova-graphique-themeconfig/app.php providers.php artisan vendor:publish --provider="Yassilah\NovaGraphiqueTheme\ThemeServiceProvider" --tag=assets (or --tag=nova-graphique-theme-assets, depending on the tag the provider declares — check src/ThemeServiceProvider.php).config/nova.php:
'theme' => 'graphique',
Nova resolves theme CSS from public/vendor/nova/themes/{theme}.css (or resources/views/vendor/nova/themes/), so the published filename must match this string.php artisan nova:publish and npm run prod if you compile your own Nova assets, then hard-refresh with cache disabled.Where to look first: src/ (usually a single service provider and maybe a resources/css or public/ folder), then README.md, then your browser devtools Network tab for a 404 on the theme CSS — that 404 is the single most common "theme isn't working" symptom and tells you the publish step or the config/nova.php key is wrong.
First real use case: replacing Nova's default dark sidebar palette with the Graphique styling for a single internal admin panel. Treat it as a CSS skin only — it does not add components, fields, or resources.
Pin-and-forget on legacy Nova. If you're on Nova 1.x, commit the composer.lock entry and don't upgrade. Themes are shallowly integrated (CSS + a config/nova.php string), so composer update is the enemy here — a Nova minor bump can silently shift class names the theme targets.
Fork as a local path repository. Since upstream is dormant, the more sustainable pattern is:
"repositories": [{"type": "path", "url": "packages/nova-graphique-theme"}]
Copy the package into packages/, then patch the CSS freely. You keep the same namespace and service provider, so nothing else changes, and you gain full control over the theme file.
Environment-scoped activation. Don't hard-code 'theme' => 'graphique' in config/nova.php. Use env:
'theme' => env('NOVA_THEME', 'graphique'),
so production can run vanilla Nova while local/staging experiments with the skin.
Layer your own overrides. Nova 1.x lets you publish views and CSS into resources/views/vendor/nova/ and public/vendor/nova/. Register the package first, then add a small custom.css loaded after the theme (via a Nova::script/Nova::style call in NovaServiceProvider::boot, if available in your Nova version) to nudge colors/branding without editing the package. Order matters — anything registered later wins.
Brand it as part of a broader Nova setup. Pair the theme with Nova::brand() / logo swap in app/Providers/NovaServiceProvider.php so the visual change is coherent. A theme alone on top of default branding tends to look half-finished.
Treat it as a template, not a dependency. The best day-to-day pattern with a 5-star, zero-dependent theme is: read its CSS, extract the useful tokens (colors, spacing, shadows), and merge them into your own small Nova theme. This is more maintainable than relying on an unmaintained package and is the realistic long-term path.
config/nova.php caching. php artisan config:cache will freeze your 'theme' value; after editing you must config:clear. Same for view:clear if the theme publishes Blade assets.vendor:publish fails with "no publishable resources," inspect the provider's publishes() call — the tag string is arbitrary and the README may be stale or missing.public/vendor/nova/. If your APP_URL or asset base is behind a proxy/CDN, the theme CSS will request from the wrong host. Confirm via devtools.nova:theme artisan command and scaffold your own.app.css to see exactly which selectors the theme assumes. That diff tells you in 30 seconds whether it will survive your Nova version.How can I help you explore Laravel packages today?