takielias/tablar
Tablar is a Laravel dashboard preset built on Tabler, featuring dark mode, ready-to-use admin layout, and dynamic menu generation. Quickly scaffold a modern UI for Laravel 11–13 projects with customizable views and components.
Installation:
composer require takielias/tablar
Run migrations and publish assets:
php artisan migrate
npm install && npm run dev
First Dashboard View:
/dashboard (default route). The package auto-generates a dark-mode dashboard with a dynamic sidebar menu.config/tablar.php under the menu key. Example:
'menu' => [
'Dashboard' => 'home',
'Users' => [
'text' => 'Users',
'icon' => 'users',
'route' => 'users.index',
],
],
First Page Integration:
UsersController@index) and return a view:
return view('users.index', ['users' => User::all()]);
<x-tablar::card>
<x-slot name="title">User Management</x-slot>
<x-tablar::table>
<x-tablar::thead>
<x-tablar::th>Name</x-tablar->th>
<x-tablar::th>Email</x-tablar->th>
</x-tablar::thead>
<x-tablar::tbody>
@foreach($users as $user)
<x-tablar::tr>
<x-tablar::td>{{ $user->name }}</x-tablar->td>
<x-tablar::td>{{ $user->email }}</x-tablar->td>
</x-tablar::tr>
@endforeach
</x-tablar::tbody>
</x-tablar::table>
</x-tablar::card>
config/tablar.php (menu, dark mode toggle, layout settings).resources/views/vendor/tablar/ (card, table, alerts, etc.).routes/web.php (default /dashboard route).app/Http/Livewire/ (if using Livewire).Workflow:
config/tablar.php:
'menu' => [
'Analytics' => [
'icon' => 'chart-bar',
'route' => 'analytics.index',
'children' => [
'Reports' => 'reports.index',
'Metrics' => 'metrics.index',
],
],
],
analytics.reports).Integration Tip:
'menu' => collect(auth()->user()->roles)->mapWithKeys(function ($role) {
return [
$role->name => [
'icon' => $role->icon,
'route' => route('role.dashboard', $role->id),
],
];
})->toArray(),
Pattern:
config/tablar.php:
'dark_mode' => true,
preferences table) and sync it:
// In a middleware or service provider
if (auth()->check()) {
$user = auth()->user();
config(['tablar.dark_mode' => $user->preferences->dark_mode ?? false]);
}
<x-tablar::dark-mode-toggle />
Patterns:
php artisan vendor:publish --tag=tablar-views.resources/views/layouts/tablar.blade.php.// config/tablar.php
'layout' => 'condensed',
'views_path' => 'resources/views/custom/tablar',
Integration Tip:
@extends('vendor.tablar.layouts.app')
@section('sidebar')
@parent
<!-- Custom sidebar items -->
<x-tablar::menu-item icon="settings" route="settings.index" />
@endsection
Workflow:
php artisan make:livewire UsersTable
<x-tablar::livewire-table>
<x-slot name="header">
<h3 class="text-xl font-semibold">Users</h3>
</x-slot>
<livewire:users-table />
</x-tablar::livewire-table>
Tip:
TablarComponent for consistent styling:
use Takielias\Tablar\Facades\Tablar;
class UsersTable extends Component {
use TablarComponent;
public function render() {
return view('livewire.users-table', [
'users' => User::paginate(10),
]);
}
}
Pattern:
php artisan vendor:publish --tag=tablar-views --force
resources/views/errors/404.blade.php to use Tablar’s layout:
@extends('vendor.tablar.layouts.error')
@section('title', 'Page Not Found')
Menu Item Activation:
analytics.reports) and match the config structure exactly.dd(config('tablar.menu')) to verify the structure.Dark Mode Persistence:
Asset Compilation:
npm install
npm run dev
resources/js/tablar.js for errors.Livewire Conflicts:
@push('styles')
<link href="{{ asset('css/tablar.css') }}" rel="stylesheet">
@endpush
Menu Debugging:
dd(config('tablar.menu'));
dd(request()->route()->getName());
Layout Issues:
php artisan view:clear
<head> section.Dark Mode Toggle:
<x-tablar::dark-mode-toggle />
Custom Components:
resources/views/vendor/tablar/components/ and extend the namespace:
// config/tablar.php
'components_path' => 'resources/views/vendor/tablar/components',
Dynamic Menu from Database:
Tablar::macro('resolveMenu', function () {
return UserMenu::where('user_id', auth()->id())->get()->toArray();
});
Custom Icons:
public/vendor/tabler/icons/ and reference them in the menu:
'icon' => 'custom-icon', // Points to public/vendor/tabler/icons/custom-icon.svg
Multi-Language Support:
'menu' => [
__('Dashboard') => 'home',
__('Users') => [
'text' => __('User Management'),
'icon' => 'users',
],
],
How can I help you explore Laravel packages today?