Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

rajusutra's avatar

Laravel Nova with Vuetify

Can we redesign the Nova theme with Vuetify

0 likes
1 reply
LaryAI's avatar
Level 58

Laravel Nova is a beautifully designed administration panel for Laravel applications that comes with its own set of UI components and styling. While Nova is not designed to work with Vuetify out of the box, it is possible to create a custom theme that incorporates Vuetify components. However, this would require a significant amount of work, as you would need to override the default Nova components and styles with those from Vuetify.

Here's a high-level approach to how you might start to integrate Vuetify into a Nova theme:

  1. Install Vuetify: First, you would need to install Vuetify into your Laravel project. You can do this by running the following command:
npm install vuetify
  1. Create a Custom Nova Theme: You can create a custom Nova theme by using the nova:theme Artisan command. This will scaffold a new theme in the nova-components directory of your application.
php artisan nova:theme your-theme-name
  1. Integrate Vuetify: After creating your theme, you would need to integrate Vuetify into the theme's asset pipeline. This would involve setting up Vuetify in the resources/js/tool.js file of your new theme.
import Vue from 'vue';
import Vuetify from 'vuetify';

Vue.use(Vuetify);

const vuetify = new Vuetify({ /* options */ });

// The existing Nova tool booting logic
Nova.booting((Vue, router, store) => {
  // Your custom components
});
  1. Override Nova Components: You would then need to create Vue components that override the default Nova components, using Vuetify components instead. You would place these in the resources/js/components directory of your theme.

  2. Compile Your Assets: After setting up your components, you would need to compile your assets using Laravel Mix. This would typically involve running npm run dev or npm run prod from your theme directory.

  3. Activate Your Theme: Finally, you would need to activate your theme in the NovaServiceProvider by registering it.

protected function themes()
{
    Nova::theme(asset('/your-theme-name/css/theme.css'));
    // ...
}

Please note that this is a non-trivial task and would require a deep understanding of both Nova's and Vuetify's components and how they can be integrated. Additionally, you would need to maintain this integration over time as both Nova and Vuetify are updated.

If you're not deeply familiar with Vue.js, Vuetify, and Laravel Nova, it might be more practical to stick with Nova's default styling or look for existing Nova themes that are closer to your desired aesthetic.

Please or to participate in this conversation.