alizharb / livewire-modular
100% first-class support for Livewire 4 in nwidart/laravel-modules.
Fund package maintenance!
alizharb
Installs: 1
Dependents: 0
Suggesters: 1
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/alizharb/livewire-modular
Requires
- php: ^8.3
- illuminate/support: ^12.0
- livewire/livewire: ^4.0
- nwidart/laravel-modules: ^12.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.24
- orchestra/testbench: ^10.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/phpstan: ^2.0
README
100% first-class support for Livewire 4 in nwidart/laravel-modules.
This package provides seamless integration between Livewire 4 and nwidart/laravel-modules, enabling you to build modular Laravel applications with full Livewire component support, including the new nested namespace syntax (module::pages::component).
Features
- ✅ Full Livewire 4 Compatibility: Works seamlessly with all Livewire 4 features
- ✅ Nested Namespace Support: Use
module::pages::showsyntax for pages and layouts - ✅ Automatic Component Discovery: Components are auto-discovered in all enabled modules
- ✅ Smart Artisan Commands:
make:livewire --module=Bloggenerates components in the correct module - ✅ Route Integration: Full support for
Route::livewire()macro with modular components - ✅ All Component Types: SFC, MFC, and class-based components work out of the box
- ✅ Flexible Directory Structure: Supports
pages/,layouts/, and custom subdirectories
Requirements
- PHP 8.3 or higher
- Laravel 12.0 or higher
- Livewire 4.0 or higher
- nwidart/laravel-modules 11.0 or higher
Installation
You can install the package via composer:
composer require alizharb/livewire-modular
The package will automatically register its service provider.
Usage
Creating Components
Use the standard make:livewire command with the --module option:
# Class-based component php artisan make:livewire PostList --module=Blog # Single File Component (SFC) php artisan make:livewire Home --module=Blog --sfc # Multi-File Component (MFC) php artisan make:livewire PostCard --module=Blog --mfc # Page component (nested namespace) php artisan make:livewire pages::show --module=Blog --sfc
Component Structure
Class-based component:
// Modules/Blog/app/Livewire/PostList.php namespace Modules\Blog\Livewire; use Livewire\Component; class PostList extends Component { public function render() { return view('blog::livewire.post-list'); } }
Page component with nested namespace:
// Modules/Blog/app/Livewire/pages/⚡show.php namespace Modules\Blog\Livewire\pages; use Livewire\Component; class Show extends Component { }
Routing
Use the Livewire 4 Route::livewire() macro with modular components:
// Modules/Blog/routes/web.php use Illuminate\Support\Facades\Route; // Standard components Route::livewire('/posts', 'blog::post-list'); // Page components (nested namespace) Route::livewire('/posts/{id}', 'blog::pages::show');
Using Components in Blade
{{-- Standard component --}} <livewire:blog::post-list /> {{-- Page component --}} <livewire:blog::pages::show :id="$id" /> {{-- Nested in other components --}} <div> <livewire:blog::post-card :post="$post" /> </div>
How It Works
The package extends Livewire's component discovery and resolution system to work seamlessly with modular applications:
- Component Discovery: Automatically scans all enabled modules for Livewire components
- Namespace Registration: Registers module-specific namespaces (e.g.,
blog::) - Path Resolution: Resolves component paths to the correct module directories
- Smart Generation: The
make:livewirecommand creates components in the module structure
Directory Structure
Components are organized within each module:
Modules/
└── Blog/
├── app/
│ └── Livewire/
│ ├── PostList.php
└── resources/
└── views/
├── livewire/
│ └── post-list.blade.php
└── pages/
└── ⚡show.blade.php
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.
