<?php namespace App\Web\Pages\Settings\Projects; use App\Actions\Projects\CreateProject; use App\Models\Project; use App\Web\Components\Page; use Filament\Actions\Action; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Support\Enums\MaxWidth; class Index extends Page { protected static ?string $navigationGroup = 'Settings'; protected static ?string $slug = 'settings/projects'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?int $navigationSort = 4; protected static ?string $title = 'Projects'; public static function getNavigationItemActiveRoutePattern(): string { return static::getRouteName().'*'; } public static function canAccess(): bool { return auth()->user()?->can('viewAny', Project::class) ?? false; } public function getWidgets(): array { return [ [Widgets\ProjectsList::class], ]; } protected function getHeaderActions(): array { return [ Action::make('create') ->label('Create Project') ->icon('heroicon-o-plus') ->authorize('create', Project::class) ->modalWidth(MaxWidth::Large) ->form(function (Form $form) { return $form->schema([ TextInput::make('name') ->name('name') ->rules(CreateProject::rules()['name']), ])->columns(1); }) ->action(function (array $data) { app(CreateProject::class)->create(auth()->user(), $data); $this->dispatch('$refresh'); }), ]; } }