<?php

declare(strict_types=1);

namespace TechnoArtisan\FilamentCms\Providers\Filament;

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 Filament\Widgets\FilamentInfoWidget;
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 TechnoArtisan\FilamentCms\Filament\Admin\Resources\Users\UserResource;
use TechnoArtisan\FilamentCms\Filament\Admin\Resources\WebsiteSettings\WebsiteSettingResource;
use TechnoArtisan\FilamentCms\Http\Middleware\ForceSsl;
use function asset;
use function base_path;

class AdminPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->default()
            ->id('admin') // to access the panel
            ->path('admin') // url path
            ->login() // need login / auth user
            ->colors([
                'primary' => Color::Blue,
            ])
            ->darkMode(isForced: true)
            ->brandName('Techno Artisan (Admin)')
            ->brandLogo(asset('vendor/filament-cms/img/techno-artisan_logo.svg'))
            ->brandLogoHeight('6rem')
            ->favicon(asset('vendor/filament-cms/img/techno-artisan_logo.svg'))
            ->discoverResources(
                in : base_path('vendor/techno-artisan/filament-cms/src/Filament/Admin/Resources'),
                for: 'TechnoArtisan\\FilamentCms\\Filament\\Admin\\Resources'
            )
//            ->discoverPages(in: app_path('Filament/Pages'), for: 'App\Filament\Pages')
//                ->resources([
//                UserResource::class,
//                WebsiteSettingResource::class,
//            ])
            ->pages([
                Dashboard::class,
            ])
//            ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\Filament\Widgets')
//            ->widgets([
//                AccountWidget::class,
//                FilamentInfoWidget::class,
//            ])
            ->middleware([
                EncryptCookies::class,
                AddQueuedCookiesToResponse::class,
                StartSession::class,
                AuthenticateSession::class,
                ShareErrorsFromSession::class,
                VerifyCsrfToken::class,
                SubstituteBindings::class,
                DisableBladeIconComponents::class,
                DispatchServingFilamentEvent::class,
            ])
            ->authMiddleware([
                Authenticate::class,
            ]);
    }
}
