A simple CoreUI admin panel template with sidebar navigation management.
You can install the package via composer:
composer require juliomotol/laravel-admin-panelAfter installing, publish its assets using the admin-panel:install Artisan command.
php artisan admin-panel:installAdd a
--no-assetsoption if you want to build your own assets.
If you prefer to use the provided assets you should publish the assets with:
@php artisan vendor:publish --tag=admin-panel-assetsTo keep the assets up-to-date and avoid issues in future updates, we highly recommend adding the command to the post-autoload-dump scripts in your composer.json file:
"scripts": { "post-update-cmd": [ "@php artisan vendor:publish --tag=laravel-assets --ansi --force", "@php artisan vendor:publish --tag=admin-panel-assets --ansi --force" ] }Include the assets by adding the following Blade directives in the head tag, and before the end body tag in your template.
<html> <head> ... @adminPanelStyle </head> <body> ... @adminPanelScript </body> </html>You can publish the config file with:
php artisan vendor:publish --tag="laravel-admin-panel-config"This is the contents of the published config file:
return [ ];Optionally, you can publish the views using
php artisan vendor:publish --tag="laravel-admin-panel-views"In your template:
<x-admin-panel-component> <!-- your mark up --> </x-admin-panel-component>You can add your own brand logos to the sidebar and header (only visible in mobile view) with:
<x-admin-panel-component> <x-slot:sidebarBrand :src="asset('logo.png')"></x-slot> <x-slot:headerBrand :src="asset('logo.png')"></x-slot> <!-- your mark up --> </x-admin-panel-component>Any additional attributes will be passed to their respective
<img>tags.
The
<x-slot:headerBrand>slot can also accept anhrefattribute that will be passed to the<a>tag enclosing the logo.
You can add your own footer with:
<x-admin-panel-component> <!-- your mark up --> <x-slot:footer> <div> Copyright © {{ date('Y') }} </div> </x-slot> </x-admin-panel-component>In your AdminPanelServiceProvider, you can build your sidebar and account dropdown navigation by:
class AdminPanelServiceProvider extends AdminPanelApplicationServiceProvider { protected function build(AdminPanelManager $adminPanel): void { $adminPanel->sidebar() ->addItem('Dashboard', 'admin.dashboard') ->addGroup( 'Access', fn (NavigationGroup $group) => $group ->addItem( 'Users', callback: fn (NavigationItem $item) => $item ->additem('Admin', 'admin.users.admins.index') ->additem('Clients', 'admin.users.clients.index') ) ->addItem('Roles', 'admin.roles') ); $adminPanel->account() ->addItem('My Profile', 'admin.my-profile.index'); ->addItem('Logout', 'auth.logout'); $adminPanel->setAccountAvatarResolver(fn () => Auth::user()->avatar()) } }You can further customize the navigation item with by passing a closure:
$adminPanel->sidebar() /** * @param string $title * @param ?string $route Can either be a named route or a url * @param array $parameters The parameters for the named route * @param \Closure $callback */ ->addItem('Inquiries', 'admin.inquiries', callback: fn (NavigationItem $item) => ...)The
NavigationItemuses Laravel'sConditionabletrait. You can usewhen()andunless()methods to customize it.
You can add an icon class with:
$adminPanel->sidebar() ->addItem( 'Inquiries', 'admin.inquiries', callback: fn (NavigationItem $item) =>$item->withIconClass('cil-notes') );The assets comes bundled with CoreUI Icons.
NOTE: The icon will not be shown in the account dropdown.
You can add a badge with:
$adminPanel->sidebar() ->addItem( 'Inquiries', 'admin.inquiries', callback: fn (NavigationItem $item) =>$item->withBadge( /** * @param string|\Closure $title * @param BadgeStyle $style */ Badge::make( fn() => Inquiries::isUnread()->count(), // Also accepts a string BadgeStyle::SUCCESS ) ) );Available badge styles are:
BadgeStyle::PRIMARY BadgeStyle::SECONDARY BadgeStyle::INFO BadgeStyle::SUCCESS BadgeStyle::WARNING BadgeStyle::ERROR
You can also add a dropdown with:
$adminPanel->sidebar() ->addItem( 'Inquiries', 'admin.inquiries', callback: fn (NavigationItem $item) =>$item->addItem(...) );NOTE: The dropdown will only be shown in the sidebar. No icons will be show to the dropdown items either.
You can add items within the navigation group with by passing a closure:
$adminPanel->sidebar() /** * @param string $title The title shown for this navigation group * @param \Closure $callback A closure to modify */ ->addGroup( 'CMS', fn (NavigationGroup $group) => $group->addItem('Pages', 'admin.pages') ->addItem('Blocks', 'admin.blocks') ->addItem('Meta', 'admin.meta') );The
NavigationGroupuses Laravel'sConditionabletrait. You can usewhen()andunless()methods to conditionaly add items.
You can display a different account avatar with:
$adminPanel->setAccountAvatarResolver(fn () => Auth::user()->avatar());A set sensible default assets is provided to you, but if you want to implement your own build steps, during admin-panel:install, add a --no-assets option:
php artisan admin-panel:install --no-assetsThen install the asset deps via NPM:
npm install @coreui/coreui @coreui/icons @coreui/utils simplebar --save-devSee the /assets as a starting ground for your assets.
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.