137 lines
5.3 KiB
PHP
137 lines
5.3 KiB
PHP
<?php
|
|
|
|
namespace App\Providers\Filament;
|
|
|
|
use AchyutN\FilamentLogViewer\FilamentLogViewer;
|
|
use App\Enums\RoleEnum;
|
|
use App\Filament\Pages\Auth\Login;
|
|
use App\Filament\Pages\Profile;
|
|
use BezhanSalleh\FilamentShield\FilamentShieldPlugin;
|
|
use DiogoGPinto\AuthUIEnhancer\AuthUIEnhancerPlugin;
|
|
use Filament\Http\Middleware\Authenticate;
|
|
use Filament\Http\Middleware\AuthenticateSession;
|
|
use Filament\Http\Middleware\DisableBladeIconComponents;
|
|
use Filament\Http\Middleware\DispatchServingFilamentEvent;
|
|
use Filament\Pages\Dashboard;
|
|
use Filament\Panel;
|
|
use Filament\PanelProvider;
|
|
use Filament\Support\Colors\Color;
|
|
use Filament\Widgets\AccountWidget;
|
|
use Hammadzafar05\MobileBottomNav\MobileBottomNav;
|
|
use Hammadzafar05\MobileBottomNav\MobileBottomNavItem;
|
|
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
|
use Illuminate\Cookie\Middleware\EncryptCookies;
|
|
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
|
|
use Illuminate\Routing\Middleware\SubstituteBindings;
|
|
use Illuminate\Session\Middleware\StartSession;
|
|
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
|
use Saade\Facehash\Enums\Variant;
|
|
use Saade\FilamentFacehash\FacehashPlugin;
|
|
use Saade\FilamentFacehash\FacehashProvider;
|
|
|
|
class AdminPanelProvider extends PanelProvider
|
|
{
|
|
public function panel(Panel $panel): Panel
|
|
{
|
|
return $panel
|
|
->default()
|
|
->id('admin')
|
|
->path('admin')
|
|
->viteTheme('resources/css/filament/admin/theme.css')
|
|
->login(Login::class)
|
|
->profile(Profile::class)
|
|
->colors([
|
|
'primary' => Color::Violet,
|
|
])
|
|
->discoverResources(in: app_path('Filament/Resources'), for: 'App\Filament\Resources')
|
|
->discoverPages(in: app_path('Filament/Pages'), for: 'App\Filament\Pages')
|
|
->pages([
|
|
Dashboard::class,
|
|
])
|
|
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\Filament\Widgets')
|
|
->widgets([
|
|
AccountWidget::class,
|
|
])
|
|
->middleware([
|
|
EncryptCookies::class,
|
|
AddQueuedCookiesToResponse::class,
|
|
StartSession::class,
|
|
AuthenticateSession::class,
|
|
ShareErrorsFromSession::class,
|
|
VerifyCsrfToken::class,
|
|
SubstituteBindings::class,
|
|
DisableBladeIconComponents::class,
|
|
DispatchServingFilamentEvent::class,
|
|
])
|
|
->authMiddleware([
|
|
Authenticate::class,
|
|
])
|
|
->plugins([
|
|
FilamentShieldPlugin::make()
|
|
->navigationSort(999)
|
|
->navigationGroup('Pelindung'),
|
|
|
|
AuthUIEnhancerPlugin::make()
|
|
->formPanelPosition('left')
|
|
->formPanelWidth('40%')
|
|
->emptyPanelBackgroundImageUrl(asset('images/login.jpg')),
|
|
|
|
FacehashPlugin::make()
|
|
->size(40)
|
|
->variant(Variant::Gradient)
|
|
->initial(true)
|
|
->colors([
|
|
'#ec4899',
|
|
'#f59e0b',
|
|
'#3b82f6',
|
|
'#f97316',
|
|
'#10b981',
|
|
]),
|
|
|
|
MobileBottomNav::make()
|
|
->items([
|
|
MobileBottomNavItem::make('Dasbor')
|
|
->icon('heroicon-m-home')
|
|
->activeIcon('heroicon-s-home')
|
|
->url('/admin')
|
|
->isActive(fn () => request()->is('admin')),
|
|
|
|
MobileBottomNavItem::make('Produksi Telur')
|
|
->icon('heroicon-m-rectangle-group')
|
|
->url('/admin/manage/egg-collections')
|
|
->isActive(fn () => request()->is('admin/manage/egg-collections')),
|
|
|
|
MobileBottomNavItem::make('Pesanan')
|
|
->icon('heroicon-m-shopping-cart')
|
|
->url('/admin/manage/orders')
|
|
->isActive(fn () => request()->is('admin/manage/orders')),
|
|
|
|
MobileBottomNavItem::make('Barang Tertunda')
|
|
->icon('heroicon-m-clock')
|
|
->url('/admin/manage/delayed-goods')
|
|
->isActive(fn () => request()->is('admin/manage/delayed-goods')),
|
|
])
|
|
->moreButton(false),
|
|
|
|
FilamentLogViewer::make()
|
|
->navigationGroup('Sistem')
|
|
->navigationIcon('heroicon-o-server-stack')
|
|
->navigationLabel('Log')
|
|
->navigationUrl('/system/logs')
|
|
->pollingTime(null)
|
|
->authorize(fn (): bool => auth()->user()->hasRole(RoleEnum::DEVELOPER->value)),
|
|
])
|
|
->navigationGroups([
|
|
'Master',
|
|
'Kelola',
|
|
'Pakan',
|
|
'Keuangan',
|
|
'Pelindung',
|
|
'Sistem',
|
|
])
|
|
->breadcrumbs(false)
|
|
->globalSearch(false)
|
|
->defaultAvatarProvider(FacehashProvider::class);
|
|
}
|
|
}
|