Installation
composer require pktharindu/ttall
php artisan ttall:install
First Use Case
npm run dev
http://localhost:8000 to see the TTALL stack (Tailwind + Turbolinks + Alpine.js) in action.php artisan make:livewire Welcome
resources/views/welcome.blade.php to include:
@livewire('welcome')
Key Files to Review
webpack.mix.js (Tailwind + PostCSS config)tailwind.config.js (Customize breakpoints, colors, etc.)resources/js/app.js (Turbolinks + Alpine.js setup)app/Http/Livewire/ (Livewire components)Frontend Development
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Click Me
</button>
data-turbo-permanent for persistent elements:
<div data-turbo-permanent>
<nav>...</nav>
</div>
<div x-data="{ open: false }">
<button @click="open = !open">Toggle</button>
<div x-show="open">Content</div>
</div>
Livewire Integration
// In Livewire component
public $count = 0;
public function increment() {
$this->count++;
}
<!-- In Blade -->
<button wire:click="increment">Count: {{ $count }}</button>
@auth
<livewire:auth.logout-button />
@endauth
Package Extensions
npm run lint
npm run format
composer test
Asset Pipeline
webpack.mix.js to add/remove dependencies:
mix.js('resources/js/app.js', 'public/js')
.postCss('resources/css/app.css', 'public/css', [
require('tailwindcss'),
]);
npm run dev -- --hot
Turbolinks Caching
data-turbo-action="replace" to force refresh:
<a href="/page" data-turbo-action="replace">Force Refresh</a>
Turbolinks is not defined).Livewire + Turbolinks Conflicts
wire:init events are not duplicated. Use wire:ignore for non-Livewire elements:
<div wire:ignore>
<select x-model="selectedOption">
<!-- Alpine.js select -->
</select>
</div>
Tailwind JIT (Just-in-Time) Mode
tailwind.config.js) may increase build time. Disable if using small projects:
module.exports = {
purge: [
'./resources/**/*.blade.php',
'./resources/**/*.js',
],
// Disable JIT for production
jit: process.env.NODE_ENV !== 'production',
};
Alpine.js + Livewire State
Archived Package Risks
composer.json:
"require": {
"pktharindu/ttall": "1.0.0"
}
Tailwind Classes
tailwindcss-intellisense in VSCode for autocomplete.node_modules/tailwindcss/lib/util/flattenColorPalette.js for generated colors.Livewire Events
<div x-data @livewire:init="console.log('Livewire ready')">
<!-- Content -->
</div>
Turbolinks Navigation
document.addEventListener('turbolinks:load', () => {
console.log('Page loaded via Turbolinks');
});
Composer Hooks
composer hooks:disable
Custom Tailwind Config
tailwind.config.js:
module.exports = {
theme: {
extend: {
colors: {
'brand': '#3b82f6',
},
},
},
};
Livewire Component Templates
php artisan make:livewire --stub=custom-stub Welcome
stubs/livewire.stub in the package.Alpine.js Plugins
resources/js/app.js:
import Alpine from 'alpinejs';
import focus from '@alpinejs/focus';
Alpine.plugin(focus);
Turbolinks Visitor
document.addEventListener('turbolinks:visit', (event) => {
// Track page visits
});
IDE Helpers
php artisan ide-helper:generate
How can I help you explore Laravel packages today?