esanj/layout-master

The ultimate template for web applications

v0.0.1 2025-10-01 09:53 UTC

This package is auto-updated.

Last update: 2025-10-01 10:11:22 UTC


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:

  1. 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.

  1. 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