esanj / layout-master
The ultimate template for web applications
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:JavaScript
Requires
- php: ^8.2|^8.3|^8.4
- esanj/managers: >=0.3.0 <0.4.0
- illuminate/support: ^10.0|^11.0|^12.0
README
A modular & extensible Laravel package for scaffolding a Vuexy-inspired admin layout.
It includes views, assets, Blade components, menu management and alert handlersβall ready for you to start building your
admin panel faster and cleaner.
Built for Laravel 12.x, Vite, and supports dynamic nested menus, sectioned Blade structure, and permission-aware links powered by π‘οΈ esanj/managers.
π Features
- π¨ Pre-built Vuexy-based master layout
- π¦ Scaffolds views, sections, assets and components
- π§© Dynamic menu JSON with nested submenus & permissions
- π Permission-aware menus (via esanj/managers)
- π― Ready for Laravel Vite setup
- π§± Supports custom JS/SCSS page parts
π¦ Installation
Install the package via composer:
composer require esanj/layout-master
Then run the layout installer:
php artisan layout-master:install
βοΈ This will publish all necessary assets, views, and structure into your Laravel project.
π Folder Structure After Installation
π resources directory includes:
- Views
resources/views/
βββ components/ # Blade reusable parts: alerts, menus, error...
βββ layouts/
β βββ master.blade.php
βββ sections/ # Body sections like header, footer, loader, etc.
You may customize or replace components freely.
- Assets
resources/assets/
βββ js/
β βββ pages/ # Add your per-page JS here
βββ scss/
β βββ vendor/
β βββ scss/pages/ # Add your custom SCSS pages here
Ensure youβre using Vite and not Mix.
π Menu System
Menu is managed via dynamic JSON located at:
resources/menu/menu.json
- Nested menus / Submenus (β depth)
- Slug and permission-based visibility
- Badges and icons
Example:
{ "menu": [ { "url": "/admin", "name": "Dashboard", "icon": "menu-icon icon-base ti tabler-smart-home", "slug": "admin.dashboard" }, { "name": "Manager", "icon": "menu-icon icon-base ti tabler-Admins", "slug": "managers", "badge": [ "primary", "3" ], "submenu": [ { "url": "/admin/managers/create", "name": "Create New Manager", "slug": "admin.managers.create", "permission": "managers.create" }, { "url": "/admin/managers", "name": "Managers List", "slug": "managers.index", "permission": "managers.list" } ] } ] }
β¨ The menu system supports:
- icon: Full CSS classes for icon
- target: set to "_blank" if you need external link
- permission: optional permission for menu visibility
β Usage in Blade
Your pages should extend the provided layouts.master:
Example:
@extends('layouts.master') @section('title', 'Dashboard') @section('vendor-style') @vite([ 'resources/assets/vendor/libs/chartjs/chartjs.scss' ]) @endsection @section('page-style') @vite([ 'resources/assets/vendor/scss/pages/dashboard.scss' ]) @endsection @section('content') <div class="container">Welcome to the dashboard</div> @endsection @section('vendor-script') @vite([ 'resources/assets/vendor/libs/chartjs/chartjs.js' ]) @endsection @section('page-script') @vite([ 'resources/assets/js/pages/dashboard.js' ]) @endsection
π§ͺ Building Assets
To compile your custom JS and SCSS:
vite build
Use vite.config.js for further customization.
πͺͺ License
MIT Β© eSanjDev