diff --git a/app/Filament/Pages/Board.php b/app/Filament/Pages/Board.php index b2f3aa90..ecae0353 100644 --- a/app/Filament/Pages/Board.php +++ b/app/Filament/Pages/Board.php @@ -3,78 +3,81 @@ namespace App\Filament\Pages; use App\Models\Project; -use Filament\Forms\Components\Card; -use Filament\Forms\Components\Grid; -use Filament\Forms\Components\Select; -use Filament\Forms\Concerns\InteractsWithForms; -use Filament\Forms\Contracts\HasForms; +use Filament\Forms; +use Filament\Forms\Form; use Filament\Pages\Page; use Illuminate\Contracts\Support\Htmlable; -class Board extends Page implements HasForms +class Board extends Page implements Forms\Contracts\HasForms { - use InteractsWithForms; - - protected static ?string $navigationIcon = 'heroicon-o-view-boards'; - - protected static string $view = 'filament.pages.board'; + use Forms\Concerns\InteractsWithForms; + protected static ?string $navigationIcon = 'heroicon-o-view-columns'; protected static ?string $slug = 'board'; - protected static ?int $navigationSort = 4; + protected static string $view = 'filament.pages.board'; - protected function getSubheading(): string|Htmlable|null - { - return __("In this section you can choose one of your projects to show it's Scrum or Kanban board"); - } + public ?int $project = null; - public function mount(): void + public function getSubheading(): string|Htmlable|null { - $this->form->fill(); + return __("In this section you can choose one of your projects to show its Scrum or Kanban board"); } - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Board'); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Management'); } - protected function getFormSchema(): array + // ✅ gunakan Form method di Filament 3, bukan getFormSchema() + public function form(Form $form): Form { - return [ - Card::make() - ->schema([ - Grid::make() - ->columns(1) - ->schema([ - Select::make('project') - ->label(__('Project')) - ->required() - ->searchable() - ->reactive() - ->afterStateUpdated(fn () => $this->search()) - ->helperText(__("Choose a project to show it's board")) - ->options(fn() => Project::where('owner_id', auth()->user()->id) - ->orWhereHas('users', function ($query) { - return $query->where('users.id', auth()->user()->id); - })->pluck('name', 'id')->toArray()), - ]), - ]), - ]; + return $form + ->schema([ + Forms\Components\Card::make() + ->schema([ + Forms\Components\Grid::make() + ->columns(1) + ->schema([ + Forms\Components\Select::make('project') + ->label(__('Project')) + ->required() + ->searchable() + ->reactive() + ->helperText(__("Choose a project to show its board")) + ->options(fn() => Project::query() + ->where('owner_id', auth()->id()) + ->orWhereHas('users', fn($q) => $q->where('users.id', auth()->id())) + ->pluck('name', 'id') + ->toArray()), + ]), + ]), + ]); } - public function search(): void + public function updatedProject($value): void { - $data = $this->form->getState(); - $project = Project::find($data['project']); - if ($project->type === "scrum") { - $this->redirect(route('filament.pages.scrum/{project}', ['project' => $project])); + if (! $value) return; + $this->redirectToProject($value); + } + + protected function redirectToProject(int $projectId): void + { + $project = Project::find($projectId); + + if (! $project) { + return; + } + + if ($project->type === 'scrum') { + $this->redirect("/scrum/{$project->id}"); } else { - $this->redirect(route('filament.pages.kanban/{project}', ['project' => $project])); + $this->redirect("/kanban/{$project->id}"); } } } diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php index aa17277a..9a4388e5 100644 --- a/app/Filament/Pages/Dashboard.php +++ b/app/Filament/Pages/Dashboard.php @@ -20,13 +20,16 @@ class Dashboard extends Page public static ?string $routeName = 'filament.pages.dashboard'; // Tambahkan baris ini // protected static bool $shouldRegisterNavigation = false; - protected static string $view = 'filament::pages.dashboard'; + protected static ?string $navigationIcon = 'heroicon-o-document-text'; + // protected static string $view = 'filament::pages.dashboard'; + protected static string $view = 'filament.pages.dashboard'; + + + // protected function getColumns(): int + // { + // return 6; + // } - protected function getColumns(): int - { - return 6; - } - protected function getWidgets(): array { diff --git a/app/Filament/Pages/JiraImport.php b/app/Filament/Pages/JiraImport.php index d0336cbb..53357a4a 100644 --- a/app/Filament/Pages/JiraImport.php +++ b/app/Filament/Pages/JiraImport.php @@ -22,7 +22,7 @@ class JiraImport extends Page implements HasForms { use InteractsWithForms, JiraHelper; - protected static ?string $navigationIcon = 'heroicon-o-cloud-download'; + protected static ?string $navigationIcon = 'heroicon-o-arrow-down-tray'; protected static string $view = 'filament.pages.jira-import'; @@ -52,22 +52,22 @@ public function mount(): void $this->form->fill(); } - protected static function shouldRegisterNavigation(): bool + public static function shouldRegisterNavigation(): bool { return auth()->user()->can('Import from Jira'); } - protected function getSubheading(): string|Htmlable|null + public function getSubheading(): string|Htmlable|null { return __('Use this section to login into your jira account and import tickets to this application'); } - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Jira import'); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Settings'); } @@ -241,10 +241,18 @@ public function import(): void $tickets[] = $this->getJiraTicketDetails($this->host, $this->username, $this->token, $url); } dispatch(new ImportJiraTicketsJob($tickets, auth()->user())); - $this->notify('success', __('The importation job is started, when finished you will be notified'), true); + // $this->notify('success', __('The importation job is started, when finished you will be notified'), true); + Notification::make() + ->title(__('The importation job is started, when finished you will be notified')) + ->success() + ->send(); $this->redirect(route('filament.pages.jira-import')); } else { - $this->notify('warning', __('Please choose at least a jira ticket to import')); + // $this->notify('warning', __('Please choose at least a jira ticket to import')); + Notification::make() + ->title(__('Please choose at least a jira ticket to import')) + ->warning() + ->send(); } } diff --git a/app/Filament/Pages/Kanban.php b/app/Filament/Pages/Kanban.php index d6324490..eb25b792 100644 --- a/app/Filament/Pages/Kanban.php +++ b/app/Filament/Pages/Kanban.php @@ -10,15 +10,18 @@ use Filament\Pages\Actions\Action; use Filament\Pages\Page; use Illuminate\Contracts\Support\Htmlable; +use Illuminate\Contracts\View\View; class Kanban extends Page implements HasForms { use InteractsWithForms, KanbanScrumHelper; - protected static ?string $navigationIcon = 'heroicon-o-view-boards'; + protected static ?string $navigationIcon = 'heroicon-o-view-columns'; protected static ?string $slug = 'kanban/{project}'; + // protected static ?string $routeName = 'pages.kanban'; + protected static string $view = 'filament.pages.kanban'; protected static bool $shouldRegisterNavigation = false; @@ -28,11 +31,13 @@ class Kanban extends Page implements HasForms 'closeTicketDialog' ]; - public function mount(Project $project) + public function mount($project): void { - $this->project = $project; + // dd('hit'); + $this->project = Project::findOrFail($project); if ($this->project->type === 'scrum') { - $this->redirect(route('filament.pages.scrum/{project}', ['project' => $project])); + $this->redirect("/scrum/{$project}"); + return; } elseif ( $this->project->owner_id != auth()->user()->id && @@ -57,7 +62,7 @@ protected function getActions(): array ]; } - protected function getHeading(): string|Htmlable + public function getHeading(): string|Htmlable { return $this->kanbanHeading(); } @@ -67,4 +72,12 @@ protected function getFormSchema(): array return $this->formSchema(); } + public function render(): View + { + // ✅ Sekarang render manual pakai komponen Filament bawaan + return view('filament.pages.kanban', [ + 'project' => $this->project, + ]); + } + } diff --git a/app/Filament/Pages/ManageGeneralSettings.php b/app/Filament/Pages/ManageGeneralSettings.php index 0d60b3c3..a5d3de2e 100644 --- a/app/Filament/Pages/ManageGeneralSettings.php +++ b/app/Filament/Pages/ManageGeneralSettings.php @@ -14,6 +14,8 @@ use Filament\Pages\Actions\Action; use Filament\Pages\SettingsPage; use Illuminate\Contracts\Support\Htmlable; +use Illuminate\Support\Facades\DB; +use Filament\Notifications\Notification; class ManageGeneralSettings extends SettingsPage { @@ -21,22 +23,22 @@ class ManageGeneralSettings extends SettingsPage protected static string $settings = GeneralSettings::class; - protected static function shouldRegisterNavigation(): bool + public static function shouldRegisterNavigation(): bool { return auth()->user()->can('Manage general settings'); } - protected function getHeading(): string|Htmlable + public function getHeading(): string|Htmlable { return __('Manage general settings'); } - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('General'); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Settings'); } @@ -97,9 +99,26 @@ protected function getFormSchema(): array ]; } - protected function getSaveFormAction(): Action + public function getSaveFormAction(): Action { - return parent::getSaveFormAction()->label(__('Save')); + // return parent::getSaveFormAction()->label(__('Save')); + return Action::make('save') + ->label('Save Settings') + ->action(function (array $data) { + $data = $this->form->getState(); + foreach ($data as $key => $value) { + DB::table('settings') + ->updateOrInsert( + ['name' => $key], + ['payload' => json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)] + ); + } + // ✅ tampilkan notifikasi sukses + Notification::make() + ->title('Pengaturan berhasil disimpan!') + ->success() + ->send(); + }); } private function getLanguages(): array diff --git a/app/Filament/Pages/RoadMap.php b/app/Filament/Pages/RoadMap.php index 78180854..2ee9f31f 100644 --- a/app/Filament/Pages/RoadMap.php +++ b/app/Filament/Pages/RoadMap.php @@ -23,6 +23,8 @@ class RoadMap extends Page implements HasForms protected static ?int $navigationSort = 5; + public ?int $selectedProject = null; + public $project; public Epic|null $epic = null; @@ -35,12 +37,12 @@ class RoadMap extends Page implements HasForms 'updateEpic' ]; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Road Map'); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Management'); } @@ -88,7 +90,7 @@ public function filter(): void $data = $this->form->getState(); $project = $data['selectedProject']; $this->project = Project::where('id', $project)->first(); - $this->dispatchBrowserEvent('projectChanged', [ + $this->dispatch('projectChanged', [ 'url' => route('road-map.data', $this->project), 'start_date' => Carbon::parse($this->project->epicsFirstDate)->subYear()->format('Y-m-d'), 'end_date' => Carbon::parse($this->project->epicsLastDate)->addYear()->format('Y-m-d'), diff --git a/app/Filament/Pages/Scrum.php b/app/Filament/Pages/Scrum.php index a84ba18e..2c970e64 100644 --- a/app/Filament/Pages/Scrum.php +++ b/app/Filament/Pages/Scrum.php @@ -10,14 +10,17 @@ use Filament\Pages\Actions\Action; use Filament\Pages\Page; use Illuminate\Contracts\Support\Htmlable; +use Illuminate\Contracts\View\View; class Scrum extends Page implements HasForms { use InteractsWithForms, KanbanScrumHelper; - protected static ?string $navigationIcon = 'heroicon-o-view-boards'; + protected static ?string $navigationIcon = 'heroicon-o-view-columns'; - protected static ?string $slug = 'scrum/{project}'; + // protected static ?string $slug = 'scrum/{project}'; + + protected static ?string $routeName = 'filament.pages.scrum'; protected static string $view = 'filament.pages.scrum'; @@ -28,11 +31,12 @@ class Scrum extends Page implements HasForms 'closeTicketDialog' ]; - public function mount(Project $project) + public function mount($project): void { - $this->project = $project; + $this->project = Project::findOrFail($project); if ($this->project->type !== 'scrum') { - $this->redirect(route('filament.pages.kanban/{project}', ['project' => $project])); + $this->redirect("/kanban/{$project}"); + return; } elseif ( $this->project->owner_id != auth()->user()->id && @@ -65,12 +69,12 @@ protected function getActions(): array ]; } - protected function getHeading(): string|Htmlable + public function getHeading(): string|Htmlable { return $this->scrumHeading(); } - protected function getSubheading(): string|Htmlable|null + public function getSubheading(): string|Htmlable|null { return $this->scrumSubHeading(); } @@ -80,4 +84,12 @@ protected function getFormSchema(): array return $this->formSchema(); } + public function render(): View + { + // ✅ Sekarang render manual pakai komponen Filament bawaan + return view('filament.pages.kanban', [ + 'project' => $this->project, + ]); + } + } diff --git a/app/Filament/Pages/TimesheetDashboard.php b/app/Filament/Pages/TimesheetDashboard.php index 08880cea..54212739 100644 --- a/app/Filament/Pages/TimesheetDashboard.php +++ b/app/Filament/Pages/TimesheetDashboard.php @@ -13,24 +13,25 @@ class TimesheetDashboard extends Page protected static ?int $navigationSort = 2; - protected static string $view = 'filament::pages.dashboard'; + protected static ?string $navigationIcon = 'heroicon-o-document-text'; + protected static string $view = 'filament.pages.dashboard'; - protected function getColumns(): int | array - { - return 6; - } + // protected function getColumns(): int | array + // { + // return 6; + // } - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Dashboard'); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Timesheet'); } - protected static function shouldRegisterNavigation(): bool + public static function shouldRegisterNavigation(): bool { return auth()->user()->can('View timesheet dashboard'); } diff --git a/app/Filament/Pages/TimesheetExport.php b/app/Filament/Pages/TimesheetExport.php index 93646b12..ebed563b 100644 --- a/app/Filament/Pages/TimesheetExport.php +++ b/app/Filament/Pages/TimesheetExport.php @@ -21,9 +21,10 @@ class TimesheetExport extends Page implements HasForms protected static ?int $navigationSort = 2; + protected static ?string $navigationIcon = 'heroicon-o-document-text'; protected static string $view = 'filament.pages.timesheet-export'; - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Timesheet'); } diff --git a/app/Filament/Resources/ActivityResource.php b/app/Filament/Resources/ActivityResource.php index 91eff9fc..6dfc4169 100644 --- a/app/Filament/Resources/ActivityResource.php +++ b/app/Filament/Resources/ActivityResource.php @@ -6,9 +6,9 @@ use App\Filament\Resources\ActivityResource\RelationManagers; use App\Models\Activity; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; class ActivityResource extends Resource @@ -19,7 +19,7 @@ class ActivityResource extends Resource protected static ?int $navigationSort = 1; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Activities'); } @@ -29,7 +29,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/IssueSourceResource.php b/app/Filament/Resources/IssueSourceResource.php index 51561f07..e7ec0343 100644 --- a/app/Filament/Resources/IssueSourceResource.php +++ b/app/Filament/Resources/IssueSourceResource.php @@ -6,9 +6,9 @@ use App\Filament\Resources\IssueSourceResource\RelationManagers; use App\Models\IssueSource; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; @@ -17,11 +17,11 @@ class IssueSourceResource extends Resource { protected static ?string $model = IssueSource::class; - protected static ?string $navigationIcon = 'heroicon-o-collection'; + protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?int $navigationSort = 7; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Issue Source'); } @@ -31,7 +31,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/MasterApplicationResource.php b/app/Filament/Resources/MasterApplicationResource.php index cac9f566..cd907e5b 100644 --- a/app/Filament/Resources/MasterApplicationResource.php +++ b/app/Filament/Resources/MasterApplicationResource.php @@ -6,9 +6,9 @@ use App\Filament\Resources\MasterApplicationResource\RelationManagers; use App\Models\MasterApplication; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; @@ -21,7 +21,7 @@ class MasterApplicationResource extends Resource protected static ?int $navigationSort = 6; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Master Application'); } @@ -31,7 +31,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/MilestoneResource.php b/app/Filament/Resources/MilestoneResource.php index 7c02fe6d..2cbe2aae 100644 --- a/app/Filament/Resources/MilestoneResource.php +++ b/app/Filament/Resources/MilestoneResource.php @@ -6,9 +6,9 @@ use App\Filament\Resources\MilestoneResource\RelationManagers; use App\Models\Milestone; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; @@ -23,11 +23,12 @@ use Filament\Forms\Components\Select; use Filament\Forms\Components\ColorPicker; + class MilestoneResource extends Resource { protected static ?string $model = Milestone::class; - protected static ?string $navigationIcon = 'heroicon-o-collection'; + protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?int $navigationSort = 6; @@ -36,7 +37,7 @@ class MilestoneResource extends Resource * * @return string Label navigasi (diterjemahkan) */ - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Milestone'); } @@ -56,7 +57,7 @@ public static function getPluralLabel(): ?string * * @return string|null Nama grup navigasi (diterjemahkan) */ - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/PermissionResource.php b/app/Filament/Resources/PermissionResource.php index 6e2957ba..06a42120 100644 --- a/app/Filament/Resources/PermissionResource.php +++ b/app/Filament/Resources/PermissionResource.php @@ -6,20 +6,20 @@ use App\Filament\Resources\PermissionResource\RelationManagers; use App\Models\Permission; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; class PermissionResource extends Resource { protected static ?string $model = Permission::class; - protected static ?string $navigationIcon = 'heroicon-o-clipboard-check'; + protected static ?string $navigationIcon = 'heroicon-o-clipboard-document-check'; protected static ?int $navigationSort = 2; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Permissions'); } @@ -29,7 +29,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return static::getPluralLabel(); } diff --git a/app/Filament/Resources/ProjectResource.php b/app/Filament/Resources/ProjectResource.php index 2952b444..fccaffc4 100644 --- a/app/Filament/Resources/ProjectResource.php +++ b/app/Filament/Resources/ProjectResource.php @@ -12,23 +12,24 @@ use App\Models\User; use Filament\Facades\Filament; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Support\HtmlString; use Illuminate\Support\Str; use Maatwebsite\Excel\Facades\Excel; +use Filament\Forms\Components\SpatieMediaLibraryFileUpload; class ProjectResource extends Resource { protected static ?string $model = Project::class; - protected static ?string $navigationIcon = 'heroicon-o-archive'; + protected static ?string $navigationIcon = 'heroicon-o-archive-box'; protected static ?int $navigationSort = 1; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Projects'); } @@ -38,7 +39,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Management'); } @@ -52,9 +53,12 @@ public static function form(Form $form): Form Forms\Components\Grid::make() ->columns(3) ->schema([ - Forms\Components\SpatieMediaLibraryFileUpload::make('cover') + SpatieMediaLibraryFileUpload::make('cover') ->label(__('Cover image')) + ->collection('cover') ->image() + ->visibility('public') + ->previewable(true) ->helperText( __('If not selected, an image will be generated based on the project name') ) @@ -178,14 +182,19 @@ class="w-8 h-8 bg-cover bg-center bg-no-repeat"> ->limit(2), Tables\Columns\BadgeColumn::make('type') - ->enum([ - 'kanban' => __('Kanban'), - 'scrum' => __('Scrum') - ]) + // ->enum([ + // 'kanban' => __('Kanban'), + // 'scrum' => __('Scrum') + // ]) ->colors([ 'secondary' => 'kanban', 'warning' => 'scrum', - ]), + ]) + ->formatStateUsing(fn (string $state): string => match ($state) { + 'kanban' => __('Kanban'), + 'scrum' => __('Scrum'), + default => ucfirst($state), + }), Tables\Columns\TextColumn::make('created_at') ->label(__('Created at')) @@ -233,7 +242,7 @@ class="w-8 h-8 bg-cover bg-center bg-no-repeat"> Tables\Actions\ActionGroup::make([ Tables\Actions\Action::make('exportLogHours') ->label(__('Export hours')) - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->color('secondary') ->action(fn($record) => Excel::download( new ProjectHoursExport($record), @@ -247,13 +256,13 @@ class="w-8 h-8 bg-cover bg-center bg-no-repeat"> fn ($record) => ($record->type === 'scrum' ? __('Scrum board') : __('Kanban board')) ) - ->icon('heroicon-o-view-boards') + ->icon('heroicon-o-view-columns') ->color('secondary') ->url(function ($record) { if ($record->type === 'scrum') { - return route('filament.pages.scrum/{project}', ['project' => $record->id]); + return "/kanban/{$record->id}"; } else { - return route('filament.pages.kanban/{project}', ['project' => $record->id]); + return "/scrum/{$record->id}"; } }), ])->color('secondary'), diff --git a/app/Filament/Resources/ProjectResource/Pages/EditProject.php b/app/Filament/Resources/ProjectResource/Pages/EditProject.php index 97a4fdb1..12960854 100644 --- a/app/Filament/Resources/ProjectResource/Pages/EditProject.php +++ b/app/Filament/Resources/ProjectResource/Pages/EditProject.php @@ -18,13 +18,13 @@ protected function getActions(): array fn () => ($this->record->type === 'scrum' ? __('Scrum board') : __('Kanban board')) ) - ->icon('heroicon-o-view-boards') + ->icon('heroicon-o-view-columns') ->color('secondary') ->url(function () { if ($this->record->type === 'scrum') { - return route('filament.pages.scrum/{project}', ['project' => $this->record->id]); + return route('filament.pages.scrum', ['project' => $this->record->id]); } else { - return route('filament.pages.kanban/{project}', ['project' => $this->record->id]); + return route('filament.pages.kanban', ['project' => $this->record->id]); } }), diff --git a/app/Filament/Resources/ProjectResource/Pages/ViewProject.php b/app/Filament/Resources/ProjectResource/Pages/ViewProject.php index 74e1fc62..b2962958 100644 --- a/app/Filament/Resources/ProjectResource/Pages/ViewProject.php +++ b/app/Filament/Resources/ProjectResource/Pages/ViewProject.php @@ -18,13 +18,13 @@ protected function getActions(): array fn () => ($this->record->type === 'scrum' ? __('Scrum board') : __('Kanban board')) ) - ->icon('heroicon-o-view-boards') + ->icon('heroicon-o-view-columns') ->color('secondary') ->url(function () { if ($this->record->type === 'scrum') { - return route('filament.pages.scrum/{project}', ['project' => $this->record->id]); + return route('filament.pages.scrum', ['project' => $this->record->id]); } else { - return route('filament.pages.kanban/{project}', ['project' => $this->record->id]); + return route('filament.pages.kanban', ['project' => $this->record->id]); } }), diff --git a/app/Filament/Resources/ProjectResource/RelationManagers/SprintsRelationManager.php b/app/Filament/Resources/ProjectResource/RelationManagers/SprintsRelationManager.php index 56623bc5..53db1629 100644 --- a/app/Filament/Resources/ProjectResource/RelationManagers/SprintsRelationManager.php +++ b/app/Filament/Resources/ProjectResource/RelationManagers/SprintsRelationManager.php @@ -10,9 +10,9 @@ use Filament\Forms; use Filament\Notifications\Actions\Action; use Filament\Notifications\Notification; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\RelationManagers\RelationManager; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\HtmlString; @@ -23,12 +23,11 @@ class SprintsRelationManager extends RelationManager protected static ?string $recordTitleAttribute = 'name'; - public static function canViewForRecord(Model $ownerRecord): bool - { + public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool { return $ownerRecord->type === 'scrum'; } - public static function form(Form $form): Form + public function form(Form $form): Form { return $form ->schema([ @@ -75,7 +74,7 @@ public static function form(Form $form): Form ]); } - public static function table(Table $table): Table + public function table(Table $table): Table { return $table ->columns([ @@ -156,9 +155,9 @@ public static function table(Table $table): Table ) ->url(function () use ($record) { if ($record->project->type === 'scrum') { - return route('filament.pages.scrum/{project}', ['project' => $record->project->id]); + return route('filament.pages.scrum', ['project' => $record->project->id]); } else { - return route('filament.pages.kanban/{project}', ['project' => $record->project->id]); + return route('filament.pages.kanban', ['project' => $record->project->id]); } }), ]) diff --git a/app/Filament/Resources/ProjectResource/RelationManagers/StatusesRelationManager.php b/app/Filament/Resources/ProjectResource/RelationManagers/StatusesRelationManager.php index 3daf6c01..55ccf102 100644 --- a/app/Filament/Resources/ProjectResource/RelationManagers/StatusesRelationManager.php +++ b/app/Filament/Resources/ProjectResource/RelationManagers/StatusesRelationManager.php @@ -5,9 +5,9 @@ use App\Models\Ticket; use App\Models\TicketStatus; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\RelationManagers\RelationManager; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Database\Eloquent\Model; @@ -17,12 +17,11 @@ class StatusesRelationManager extends RelationManager protected static ?string $recordTitleAttribute = 'name'; - public static function canViewForRecord(Model $ownerRecord): bool - { + public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool { return $ownerRecord->status_type === 'custom'; } - public static function form(Form $form): Form + public function form(Form $form): Form { return $form ->schema([ @@ -51,7 +50,7 @@ public static function form(Form $form): Form ]); } - public static function table(Table $table): Table + public function table(Table $table): Table { return $table ->columns([ diff --git a/app/Filament/Resources/ProjectResource/RelationManagers/UsersRelationManager.php b/app/Filament/Resources/ProjectResource/RelationManagers/UsersRelationManager.php index 9af09049..0f942215 100644 --- a/app/Filament/Resources/ProjectResource/RelationManagers/UsersRelationManager.php +++ b/app/Filament/Resources/ProjectResource/RelationManagers/UsersRelationManager.php @@ -3,9 +3,9 @@ namespace App\Filament\Resources\ProjectResource\RelationManagers; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\RelationManagers\RelationManager; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Database\Eloquent\Model; @@ -23,7 +23,7 @@ public static function attach(Form $form): Form ->schema([]); } - public static function table(Table $table): Table + public function table(Table $table): Table { return $table ->columns([ @@ -34,7 +34,7 @@ public static function table(Table $table): Table Tables\Columns\BadgeColumn::make('pivot.role') ->label(__('User role')) - ->enum(config('system.projects.affectations.roles.list')) + ->formatStateUsing(fn (string $state) => config('system.projects.affectations.roles.list')[$state] ?? $state) ->colors(config('system.projects.affectations.roles.colors')) ->searchable() ->sortable(), diff --git a/app/Filament/Resources/ProjectStatusResource.php b/app/Filament/Resources/ProjectStatusResource.php index 2f3f17a4..28ee9561 100644 --- a/app/Filament/Resources/ProjectStatusResource.php +++ b/app/Filament/Resources/ProjectStatusResource.php @@ -6,20 +6,20 @@ use App\Filament\Resources\ProjectStatusResource\RelationManagers; use App\Models\ProjectStatus; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; class ProjectStatusResource extends Resource { protected static ?string $model = ProjectStatus::class; - protected static ?string $navigationIcon = 'heroicon-o-clipboard-list'; + protected static ?string $navigationIcon = 'heroicon-o-clipboard-document-list'; protected static ?int $navigationSort = 1; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Project statuses'); } @@ -29,7 +29,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/RoleResource.php b/app/Filament/Resources/RoleResource.php index bdf0a081..9ce04f15 100644 --- a/app/Filament/Resources/RoleResource.php +++ b/app/Filament/Resources/RoleResource.php @@ -7,9 +7,9 @@ use App\Models\Permission; use App\Models\Role; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; class RoleResource extends Resource @@ -20,7 +20,7 @@ class RoleResource extends Resource protected static ?int $navigationSort = 3; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Roles'); } @@ -30,7 +30,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Permissions'); } diff --git a/app/Filament/Resources/TicketCategoryResource.php b/app/Filament/Resources/TicketCategoryResource.php index 6e240310..7028faad 100644 --- a/app/Filament/Resources/TicketCategoryResource.php +++ b/app/Filament/Resources/TicketCategoryResource.php @@ -17,16 +17,16 @@ use App\Filament\Resources\TicketCategoryResource\Pages; use App\Models\TicketCategory; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; class TicketCategoryResource extends Resource { protected static ?string $model = TicketCategory::class; - protected static ?string $navigationIcon = 'heroicon-o-collection'; + protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?int $navigationSort = 5; @@ -35,7 +35,7 @@ class TicketCategoryResource extends Resource * * @return string Label navigasi (diterjemahkan) */ - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Solution Categories'); } @@ -55,7 +55,7 @@ public static function getPluralLabel(): ?string * * @return string|null Nama grup navigasi (diterjemahkan) */ - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/TicketCategoryResource/Pages/CreateTicketCategory.php b/app/Filament/Resources/TicketCategoryResource/Pages/CreateTicketCategory.php index 4dad27dc..75c3b90e 100644 --- a/app/Filament/Resources/TicketCategoryResource/Pages/CreateTicketCategory.php +++ b/app/Filament/Resources/TicketCategoryResource/Pages/CreateTicketCategory.php @@ -26,8 +26,8 @@ class CreateTicketCategory extends CreateRecord * * @return string Judul halaman (diterjemahkan) */ - protected function getTitle(): string + public function getTitle(): string { - return __('Crete Solution Categories'); + return __('Create Solution Categories'); } } diff --git a/app/Filament/Resources/TicketCategoryResource/Pages/EditTicketCategory.php b/app/Filament/Resources/TicketCategoryResource/Pages/EditTicketCategory.php index af27c184..705a24fd 100644 --- a/app/Filament/Resources/TicketCategoryResource/Pages/EditTicketCategory.php +++ b/app/Filament/Resources/TicketCategoryResource/Pages/EditTicketCategory.php @@ -27,7 +27,7 @@ class EditTicketCategory extends EditRecord * * @return string Judul halaman (diterjemahkan) */ - protected function getTitle(): string + public function getTitle(): string { return __('Edit Solution Categories'); } diff --git a/app/Filament/Resources/TicketPriorityResource.php b/app/Filament/Resources/TicketPriorityResource.php index 2cba855b..e6a6cabb 100644 --- a/app/Filament/Resources/TicketPriorityResource.php +++ b/app/Filament/Resources/TicketPriorityResource.php @@ -6,9 +6,9 @@ use App\Filament\Resources\TicketPriorityResource\RelationManagers; use App\Models\TicketPriority; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Guava\FilamentIconPicker\Tables\IconColumn; use Illuminate\Database\Eloquent\Builder; @@ -18,11 +18,11 @@ class TicketPriorityResource extends Resource { protected static ?string $model = TicketPriority::class; - protected static ?string $navigationIcon = 'heroicon-o-badge-check'; + protected static ?string $navigationIcon = 'heroicon-o-check-badge'; protected static ?int $navigationSort = 4; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Ticket priorities'); } @@ -32,7 +32,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/TicketResource.php b/app/Filament/Resources/TicketResource.php index d66d2da3..a7524559 100644 --- a/app/Filament/Resources/TicketResource.php +++ b/app/Filament/Resources/TicketResource.php @@ -12,11 +12,11 @@ use App\Models\TicketType; use App\Models\User; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Pages\CreateRecord; use Filament\Resources\Pages\EditRecord; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Support\HtmlString; use App\Models\MasterApplication; @@ -24,6 +24,7 @@ use App\Models\Milestone; use Carbon\Carbon; use App\Models\IssueSource; +use Filament\Tables\Columns\ViewColumn; class TicketResource extends Resource { @@ -38,7 +39,7 @@ class TicketResource extends Resource * * @return string Label navigasi (diterjemahkan) */ - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Tickets'); } @@ -58,7 +59,7 @@ public static function getPluralLabel(): ?string * * @return string|null Nama grup navigasi (diterjemahkan) */ - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Management'); } @@ -252,6 +253,13 @@ public static function form(Form $form): Form Forms\Components\RichEditor::make('content') ->label(__('Ticket content')) ->required() + ->default('') // aman untuk form create + ->afterStateHydrated(function (?string $state, $set) { + if (blank($state) || $state === 'undefined') { + $set('content', ''); + } + }) + ->dehydrated(true) ->columnSpan(2), // Grid estimasi waktu @@ -340,18 +348,38 @@ public static function tableColumns(bool $withProject = true): array ->searchable(), // Kolom owner - Tables\Columns\TextColumn::make('owner.name') + // Tables\Columns\TextColumn::make('owner.name') + // ->label(__('Owner')) + // ->sortable() + // ->formatStateUsing(fn($record) => view('components.user-avatar', ['user' => $record->owner])) + // ->searchable(), + ViewColumn::make('owner') ->label(__('Owner')) + ->view('components.user-avatar') + ->viewData(fn ($record) => [ + 'user' => $record->owner, // kirim variabel $user persis seperti sebelumnya + 'record' => $record, // opsional kalau view kamu masih butuh $record + ]) ->sortable() - ->formatStateUsing(fn($record) => view('components.user-avatar', ['user' => $record->owner])) - ->searchable(), + ->searchable() + ->disabledClick(), // Kolom penanggung jawab - Tables\Columns\TextColumn::make('responsible.name') + // Tables\Columns\TextColumn::make('responsible.name') + // ->label(__('Responsible')) + // ->sortable() + // ->formatStateUsing(fn($record) => view('components.user-avatar', ['user' => $record->responsible])) + // ->searchable(), + ViewColumn::make('responsible') ->label(__('Responsible')) + ->view('components.user-avatar') + ->viewData(fn ($record) => [ + 'user' => $record->responsible, // kirim variabel $user persis seperti sebelumnya + 'record' => $record, // opsional kalau view kamu masih butuh $record + ]) ->sortable() - ->formatStateUsing(fn($record) => view('components.user-avatar', ['user' => $record->responsible])) - ->searchable(), + ->searchable() + ->disabledClick(), // Kolom status Tables\Columns\TextColumn::make('status.name') diff --git a/app/Filament/Resources/TicketResource/Pages/CreateTicket.php b/app/Filament/Resources/TicketResource/Pages/CreateTicket.php index 52709418..11671a85 100644 --- a/app/Filament/Resources/TicketResource/Pages/CreateTicket.php +++ b/app/Filament/Resources/TicketResource/Pages/CreateTicket.php @@ -50,11 +50,19 @@ class CreateTicket extends CreateRecord * * @param mixed $id */ - public function __construct($id = null) + public ?int $id = null; + + public function mount($id = null): void { - parent::__construct($id); - $this->telegram = app(TelegramService::class); // Ambil service dari container Laravel + parent::mount($id); + $this->id = $id; + $this->telegram = app(TelegramService::class); } + // public function __construct($id = null) + // { + // parent::__construct($id); + // $this->telegram = app(TelegramService::class); // Ambil service dari container Laravel + // } /** * Memodifikasi data form sebelum proses create. diff --git a/app/Filament/Resources/TicketResource/Pages/ViewTicket.php b/app/Filament/Resources/TicketResource/Pages/ViewTicket.php index 591f5291..b4c1bbfc 100644 --- a/app/Filament/Resources/TicketResource/Pages/ViewTicket.php +++ b/app/Filament/Resources/TicketResource/Pages/ViewTicket.php @@ -36,10 +36,16 @@ class ViewTicket extends ViewRecord implements HasForms public $selectedCommentId; + public $comment; + public function mount($record): void { parent::mount($record); - $this->form->fill(); + + $this->comment = ''; + $this->form->fill([ + 'comment' => $this->comment + ]); } protected function getActions(): array @@ -65,19 +71,29 @@ protected function getActions(): array ->first() ) { $sub->delete(); - $this->notify('success', __('You unsubscribed from the ticket')); + // $this->notify('success', __('You unsubscribed from the ticket')); + // ✅ tampilkan notifikasi sukses + Notification::make() + ->title(__('You unsubscribed from the ticket')) + ->success() + ->send(); } else { TicketSubscriber::create([ 'user_id' => auth()->user()->id, 'ticket_id' => $this->record->id ]); - $this->notify('success', __('You subscribed to the ticket')); + // $this->notify('success', __('You subscribed to the ticket')); + // ✅ tampilkan notifikasi sukses + Notification::make() + ->title( __('You subscribed to the ticket')) + ->success() + ->send(); } $this->record->refresh(); }), Actions\Action::make('share') ->label(__('Share')) - ->color('secondary') + ->color('primary') ->button() ->icon('heroicon-o-share') ->action(fn() => $this->dispatchBrowserEvent('shareTicket', [ @@ -123,12 +139,17 @@ protected function getActions(): array 'comment' => $comment ]); $this->record->refresh(); - $this->notify('success', __('Time logged into ticket')); + // $this->notify('success', __('Time logged into ticket')); + // ✅ tampilkan notifikasi sukses + Notification::make() + ->title(__('Time logged into ticket')) + ->success() + ->send(); }), Actions\ActionGroup::make([ Actions\Action::make('exportLogHours') ->label(__('Export time logged')) - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->color('warning') ->visible( fn() => $this->record->watchers->where('id', auth()->user()->id)->count() @@ -164,6 +185,7 @@ protected function getFormSchema(): array ->disableLabel() ->placeholder(__('Type a new comment')) ->required() + ->default('') // aman untuk form create ]; } @@ -184,7 +206,12 @@ public function submitComment(): void } $this->record->refresh(); $this->cancelEditComment(); - $this->notify('success', __('Comment saved')); + // $this->notify('success', __('Comment saved')); + // ✅ tampilkan notifikasi sukses + Notification::make() + ->title(__('Comment saved')) + ->success() + ->send(); } public function isAdministrator(): bool @@ -231,7 +258,11 @@ public function doDeleteComment(int $commentId): void { TicketComment::where('id', $commentId)->delete(); $this->record->refresh(); - $this->notify('success', __('Comment deleted')); + // $this->notify('success', __('Comment deleted')); + Notification::make() + ->title(__('Comment deleted')) + ->success() + ->send(); } public function cancelEditComment(): void diff --git a/app/Filament/Resources/TicketStatusResource.php b/app/Filament/Resources/TicketStatusResource.php index 99612ab0..d46bbc80 100644 --- a/app/Filament/Resources/TicketStatusResource.php +++ b/app/Filament/Resources/TicketStatusResource.php @@ -6,9 +6,9 @@ use App\Filament\Resources\TicketStatusResource\RelationManagers; use App\Models\TicketStatus; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; class TicketStatusResource extends Resource @@ -19,7 +19,7 @@ class TicketStatusResource extends Resource protected static ?int $navigationSort = 1; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Ticket statuses'); } @@ -29,7 +29,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/TicketTypeResource.php b/app/Filament/Resources/TicketTypeResource.php index e515ff68..379898c4 100644 --- a/app/Filament/Resources/TicketTypeResource.php +++ b/app/Filament/Resources/TicketTypeResource.php @@ -6,9 +6,9 @@ use App\Filament\Resources\TicketTypeResource\RelationManagers; use App\Models\TicketType; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Guava\FilamentIconPicker\Forms\IconPicker; use Guava\FilamentIconPicker\Tables\IconColumn; @@ -17,11 +17,11 @@ class TicketTypeResource extends Resource { protected static ?string $model = TicketType::class; - protected static ?string $navigationIcon = 'heroicon-o-clipboard-check'; + protected static ?string $navigationIcon = 'heroicon-o-clipboard-document-check'; protected static ?int $navigationSort = 1; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Ticket types'); } @@ -31,7 +31,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Referential'); } diff --git a/app/Filament/Resources/TimesheetResource.php b/app/Filament/Resources/TimesheetResource.php index 27637104..6c4b0546 100644 --- a/app/Filament/Resources/TimesheetResource.php +++ b/app/Filament/Resources/TimesheetResource.php @@ -10,20 +10,20 @@ use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; class TimesheetResource extends Resource { protected static ?string $model = TicketHour::class; - protected static ?string $navigationIcon = 'heroicon-o-badge-check'; + protected static ?string $navigationIcon = 'heroicon-o-check-badge'; protected static ?int $navigationSort = 4; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Timesheet'); } @@ -33,12 +33,12 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Timesheet'); } - protected static function shouldRegisterNavigation(): bool + public static function shouldRegisterNavigation(): bool { return auth()->user()->can('List timesheet data'); } diff --git a/app/Filament/Resources/TokenResource.php b/app/Filament/Resources/TokenResource.php index cf831ae6..db359b5c 100644 --- a/app/Filament/Resources/TokenResource.php +++ b/app/Filament/Resources/TokenResource.php @@ -5,8 +5,8 @@ use Filament\Forms; use Filament\Tables; use App\Models\Token; -use Filament\Resources\Form; -use Filament\Resources\Table; +use Filament\Forms\Form; +use Filament\Tables\Table; use Illuminate\Support\Carbon; use Filament\Resources\Resource; use Filament\Notifications\Notification; @@ -23,7 +23,7 @@ class TokenResource extends Resource protected static ?int $navigationSort = 5; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Tokens'); } @@ -33,7 +33,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Management'); } diff --git a/app/Filament/Resources/TokenResource/Pages/ListTokens.php b/app/Filament/Resources/TokenResource/Pages/ListTokens.php index 507e7e8a..602557d8 100644 --- a/app/Filament/Resources/TokenResource/Pages/ListTokens.php +++ b/app/Filament/Resources/TokenResource/Pages/ListTokens.php @@ -10,7 +10,7 @@ class ListTokens extends ListRecords { protected static string $resource = TokenResource::class; - protected function getFooter(): ?\Illuminate\Contracts\View\View + public function getFooter(): ?\Illuminate\Contracts\View\View { return view('filament.resources.token-resource.copy-token'); } diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index e1b1ced3..da93260a 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -6,10 +6,10 @@ use App\Filament\Resources\UserResource\RelationManagers; use App\Models\User; use Filament\Forms; -use Filament\Resources\Form; +use Filament\Forms\Form; use Filament\Resources\Pages\CreateRecord; use Filament\Resources\Resource; -use Filament\Resources\Table; +use Filament\Tables\Table; use Filament\Tables; use Illuminate\Support\HtmlString; @@ -21,7 +21,7 @@ class UserResource extends Resource protected static ?int $navigationSort = 1; - protected static function getNavigationLabel(): string + public static function getNavigationLabel(): string { return __('Users'); } @@ -31,7 +31,7 @@ public static function getPluralLabel(): ?string return static::getNavigationLabel(); } - protected static function getNavigationGroup(): ?string + public static function getNavigationGroup(): ?string { return __('Permissions'); } diff --git a/app/Filament/Widgets/FavoriteProjects.php b/app/Filament/Widgets/FavoriteProjects.php index 9b118460..4c7748ea 100644 --- a/app/Filament/Widgets/FavoriteProjects.php +++ b/app/Filament/Widgets/FavoriteProjects.php @@ -62,7 +62,7 @@ class="w-8 h-8 bg-cover bg-center bg-no-repeat"> | + href="' . route('filament.pages.kanban', ['project' => $project->id]) . '"> ' . __('Tickets') . ' diff --git a/app/Filament/Widgets/TicketByApplicationChart.php b/app/Filament/Widgets/TicketByApplicationChart.php index 2d5ee70c..fe5c8263 100644 --- a/app/Filament/Widgets/TicketByApplicationChart.php +++ b/app/Filament/Widgets/TicketByApplicationChart.php @@ -22,16 +22,27 @@ public function getHeading(): string return __('Trend by application'); } - public ?array $formData = []; + // ✅ deklarasi semua properti Livewire + public int $start_month; + public int $start_year; + public int $end_month; + public int $end_year; + public int $master_application_id; public function mount(): void { + $this->start_month = now()->subMonths(2)->month; + $this->start_year = now()->subMonths(2)->year; + $this->end_month = now()->month; + $this->end_year = now()->year; + $this->master_application_id = MasterApplication::first()->id; // Default to 'Semua' + $this->form->fill([ - 'start_month' => now()->subMonths(2)->month, - 'start_year' => now()->subMonths(2)->year, - 'end_month' => now()->month, - 'end_year' => now()->year, - 'master_application_id' => MasterApplication::first()->id, // Default to 'Semua' + 'start_month' => $this->start_month, + 'start_year' => $this->start_year, + 'end_month' => $this->end_month, + 'end_year' => $this->end_year, + 'master_application_id' => $this->master_application_id // Default to 'Semua' ]); } @@ -124,7 +135,7 @@ public function updated($name, $value): void { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('updateApplicationChart', [ + $this->dispatch('updateApplicationChart', [ 'labels' => $chartData['labels']->toArray(), 'data' => $chartData['data']->toArray(), ]); @@ -134,7 +145,7 @@ public function initChart() { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('renderApplicationChart', [ + $this->dispatch('renderApplicationChart', [ 'labels' => $chartData['labels']->toArray(), 'data' => $chartData['data']->toArray(), ]); diff --git a/app/Filament/Widgets/TicketByServiceChart.php b/app/Filament/Widgets/TicketByServiceChart.php index 881fe9aa..febc5b59 100644 --- a/app/Filament/Widgets/TicketByServiceChart.php +++ b/app/Filament/Widgets/TicketByServiceChart.php @@ -22,16 +22,27 @@ public function getHeading(): string return __('Trend by service'); } - public ?array $formData = []; + // ✅ deklarasi semua properti Livewire + public int $start_month; + public int $start_year; + public int $end_month; + public int $end_year; + public int $project_id; public function mount(): void { + $this->start_month = now()->subMonths(2)->month; + $this->start_year = now()->subMonths(2)->year; + $this->end_month = now()->month; + $this->end_year = now()->year; + $this->project_id = Project::first()->id; // Default to 'Semua' + $this->form->fill([ - 'start_month' => now()->subMonths(2)->month, - 'start_year' => now()->subMonths(2)->year, - 'end_month' => now()->month, - 'end_year' => now()->year, - 'project_id' => Project::first()->id, // Default to 'Semua' + 'start_month' => $this->start_month, + 'start_year' => $this->start_year, + 'end_month' => $this->end_month, + 'end_year' => $this->end_year, + 'project_id' => $this->project_id // Default to 'Semua' ]); } @@ -124,7 +135,7 @@ public function updated($name, $value): void { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('updateServiceChart', [ + $this->dispatch('updateServiceChart', [ 'labels' => $chartData['labels']->toArray(), 'data' => $chartData['data']->toArray(), ]); @@ -134,7 +145,7 @@ public function initChart() { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('renderServiceChart', [ + $this->dispatch('renderServiceChart', [ 'labels' => $chartData['labels']->toArray(), 'data' => $chartData['data']->toArray(), ]); diff --git a/app/Filament/Widgets/TicketDuplicateChart.php b/app/Filament/Widgets/TicketDuplicateChart.php index 887ff37c..a09445ab 100644 --- a/app/Filament/Widgets/TicketDuplicateChart.php +++ b/app/Filament/Widgets/TicketDuplicateChart.php @@ -21,13 +21,18 @@ public function getHeading(): string return __('Trend duplicates'); } - public ?array $formData = []; + // ✅ deklarasi semua properti Livewire + public int $month; + public int $year; public function mount(): void { + $this->month = now()->month; + $this->year = now()->year; + $this->form->fill([ - 'month' => now()->month, - 'year' => now()->year, + 'month' => $this->month, + 'year' => $this->year, ]); } @@ -80,7 +85,7 @@ public function getChartData(): array return [ 'labels' => $tickets->pluck('relation_id')->map(fn ($id) => 'ID Tiket : ' . $id)->values(), 'data' => $tickets->pluck('total'), - 'urls' => $tickets->pluck('relation_id')->map(fn ($id) => route('filament.resources.tickets.view', $id)), + 'urls' => $tickets->pluck('relation_id')->map(fn ($id) => route('filament.admin.resources.tickets.view', ['record' => $id])), ]; } @@ -94,7 +99,7 @@ public function updated($name, $value): void { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('updateDuplicateChart', [ + $this->dispatch('updateDuplicateChart', [ 'labels' => $chartData['labels']->toArray(), 'data' => $chartData['data']->toArray(), 'urls' => $chartData['urls']->toArray(), @@ -105,7 +110,7 @@ public function initChart() { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('renderDuplicateChart', [ + $this->dispatch('renderDuplicateChart', [ 'labels' => $chartData['labels']->toArray(), 'data' => $chartData['data']->toArray(), 'urls' => $chartData['urls']->toArray(), diff --git a/app/Filament/Widgets/TicketOwnerChart.php b/app/Filament/Widgets/TicketOwnerChart.php index 645c09ee..caa92f4a 100644 --- a/app/Filament/Widgets/TicketOwnerChart.php +++ b/app/Filament/Widgets/TicketOwnerChart.php @@ -23,16 +23,27 @@ public function getHeading(): string return __('Trend by owner'); } - public ?array $formData = []; + // ✅ deklarasi semua properti Livewire + public int $start_month; + public int $start_year; + public int $end_month; + public int $end_year; + public int $owner_id; public function mount(): void { + $this->start_month = now()->subMonths(2)->month; + $this->start_year = now()->subMonths(2)->year; + $this->end_month = now()->month; + $this->end_year = now()->year; + $this->owner_id = 0; // Default to 'Semua' + $this->form->fill([ - 'start_month' => now()->subMonths(2)->month, - 'start_year' => now()->subMonths(2)->year, - 'end_month' => now()->month, - 'end_year' => now()->year, - 'owner_id' => 0, // Default to 'Semua' + 'start_month' => $this->start_month, + 'start_year' => $this->start_year, + 'end_month' => $this->end_month, + 'end_year' => $this->end_year, + 'owner_id' => $this->owner_id // Default to 'Semua' ]); } @@ -174,7 +185,7 @@ public function updated($name, $value): void { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('updateOwnerChart', [ + $this->dispatch('updateOwnerChart', [ 'labels' => $chartData['labels'], 'datasets' => collect($chartData['series'])->map(function ($s, $i) { $colors = ['#3b82f6', '#10b981', '#f59e0b']; // biru, hijau, kuning @@ -191,7 +202,7 @@ public function initChart() { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('renderOwnerChart', [ + $this->dispatch('renderOwnerChart', [ 'labels' => $chartData['labels'], 'datasets' => collect($chartData['series'])->map(function ($s, $i) { $colors = ['#3b82f6', '#10b981', '#f59e0b']; diff --git a/app/Filament/Widgets/TicketResponsibilityChart.php b/app/Filament/Widgets/TicketResponsibilityChart.php index 586dc3ae..c5a2ea4e 100644 --- a/app/Filament/Widgets/TicketResponsibilityChart.php +++ b/app/Filament/Widgets/TicketResponsibilityChart.php @@ -22,16 +22,27 @@ public function getHeading(): string return __('Trend by responsible'); } - public ?array $formData = []; + // ✅ deklarasi semua properti Livewire + public int $start_month; + public int $start_year; + public int $end_month; + public int $end_year; + public int $responsibility_id; public function mount(): void { + $this->start_month = now()->subMonths(2)->month; + $this->start_year = now()->subMonths(2)->year; + $this->end_month = now()->month; + $this->end_year = now()->year; + $this->resposibility_id = 0; // Default to 'Semua' + $this->form->fill([ - 'start_month' => now()->subMonths(2)->month, - 'start_year' => now()->subMonths(2)->year, - 'end_month' => now()->month, - 'end_year' => now()->year, - 'responsibility_id' => 0, // Default to 'Semua' + 'start_month' => $this->start_month, + 'start_year' => $this->start_year, + 'end_month' => $this->end_month, + 'end_year' => $this->end_year, + 'responsibility_id' => $this->resposibility_id // Default to 'Semua' ]); } @@ -173,7 +184,7 @@ public function updated($name, $value): void { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('updateResponsibilityChart', [ + $this->dispatch('updateResponsibilityChart', [ 'labels' => $chartData['labels'], 'datasets' => collect($chartData['series'])->map(function ($s, $i) { $colors = ['#3b82f6', '#10b981', '#f59e0b', '#ffc0cb']; // biru, hijau, kuning, pink @@ -190,7 +201,7 @@ public function initChart() { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('renderResponsibilityChart', [ + $this->dispatch('renderResponsibilityChart', [ 'labels' => $chartData['labels'], 'datasets' => collect($chartData['series'])->map(function ($s, $i) { $colors = ['#3b82f6', '#10b981', '#f59e0b']; diff --git a/app/Filament/Widgets/TicketTimeLogged.php b/app/Filament/Widgets/TicketTimeLogged.php index 91050f55..8ac02ae0 100644 --- a/app/Filament/Widgets/TicketTimeLogged.php +++ b/app/Filament/Widgets/TicketTimeLogged.php @@ -21,7 +21,7 @@ public static function canView(): bool return auth()->user()->can('List tickets'); } - protected function getHeading(): string + public function getHeading(): string { return __('Time logged by tickets'); } diff --git a/app/Filament/Widgets/TicketTrendChart.php b/app/Filament/Widgets/TicketTrendChart.php index e5022f1b..634fe1e5 100644 --- a/app/Filament/Widgets/TicketTrendChart.php +++ b/app/Filament/Widgets/TicketTrendChart.php @@ -21,15 +21,24 @@ public function getHeading(): string return __('Trend ticket'); } - public ?array $formData = []; + // ✅ deklarasi semua properti Livewire + public int $start_month; + public int $start_year; + public int $end_month; + public int $end_year; public function mount(): void { + $this->start_month = now()->subMonths(2)->month; + $this->start_year = now()->subMonths(2)->year; + $this->end_month = now()->month; + $this->end_year = now()->year; + $this->form->fill([ - 'start_month' => now()->subMonths(2)->month, - 'start_year' => now()->subMonths(2)->year, - 'end_month' => now()->month, - 'end_year' => now()->year, + 'start_month' => $this->start_month, + 'start_year' => $this->start_year, + 'end_month' => $this->end_month, + 'end_year' => $this->end_year, ]); } @@ -112,7 +121,7 @@ public function updated($name, $value): void { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('updateTrendChart', [ + $this->dispatch('updateTrendChart', [ 'labels' => $chartData['labels']->toArray(), 'data' => $chartData['data']->toArray(), ]); @@ -122,7 +131,7 @@ public function initChart() { $chartData = $this->getChartData(); - $this->dispatchBrowserEvent('renderTrendChart', [ + $this->dispatch('renderTrendChart', [ 'labels' => $chartData['labels']->toArray(), 'data' => $chartData['data']->toArray(), ]); diff --git a/app/Filament/Widgets/TicketsByPriority.php b/app/Filament/Widgets/TicketsByPriority.php index df3ad5be..726459c9 100644 --- a/app/Filament/Widgets/TicketsByPriority.php +++ b/app/Filament/Widgets/TicketsByPriority.php @@ -21,7 +21,7 @@ public static function canView(): bool return auth()->user()->can('List tickets'); } - protected function getHeading(): string + public function getHeading(): string { return __('Tickets by priorities'); } diff --git a/app/Filament/Widgets/TicketsByType.php b/app/Filament/Widgets/TicketsByType.php index 133042e1..3ddccd57 100644 --- a/app/Filament/Widgets/TicketsByType.php +++ b/app/Filament/Widgets/TicketsByType.php @@ -21,7 +21,7 @@ public static function canView(): bool return auth()->user()->can('List tickets'); } - protected function getHeading(): string + public function getHeading(): string { return __('Tickets by types'); } diff --git a/app/Filament/Widgets/Timesheet/ActivitiesReport.php b/app/Filament/Widgets/Timesheet/ActivitiesReport.php index 8d0e1dc4..1ad2919f 100644 --- a/app/Filament/Widgets/Timesheet/ActivitiesReport.php +++ b/app/Filament/Widgets/Timesheet/ActivitiesReport.php @@ -21,7 +21,7 @@ class ActivitiesReport extends BarChartWidget public ?string $filter = '2023'; - protected function getHeading(): string + public function getHeading(): string { return __('Logged time by activity'); } diff --git a/app/Filament/Widgets/Timesheet/MonthlyReport.php b/app/Filament/Widgets/Timesheet/MonthlyReport.php index e8e590ed..a1600cea 100644 --- a/app/Filament/Widgets/Timesheet/MonthlyReport.php +++ b/app/Filament/Widgets/Timesheet/MonthlyReport.php @@ -13,7 +13,7 @@ class MonthlyReport extends BarChartWidget { - protected function getHeading(): string + public function getHeading(): string { return __('Logged time monthly'); } diff --git a/app/Filament/Widgets/Timesheet/WeeklyReport.php b/app/Filament/Widgets/Timesheet/WeeklyReport.php index 9739952c..95e3b671 100644 --- a/app/Filament/Widgets/Timesheet/WeeklyReport.php +++ b/app/Filament/Widgets/Timesheet/WeeklyReport.php @@ -20,16 +20,16 @@ class WeeklyReport extends BarChartWidget 'lg' => 3 ]; - public function __construct($id = null) + public function mount($id = null) : void { $weekDaysData = $this->getWeekStartAndFinishDays(); $this->filter = $weekDaysData['weekStartDate'] . ' - ' . $weekDaysData['weekEndDate']; - parent::__construct($id); + // parent::__construct($id); } - protected function getHeading(): string + public function getHeading(): string { return __('Weekly logged time'); } diff --git a/app/Filament/Widgets/UserTimeLogged.php b/app/Filament/Widgets/UserTimeLogged.php index f167185d..d66d9ed7 100644 --- a/app/Filament/Widgets/UserTimeLogged.php +++ b/app/Filament/Widgets/UserTimeLogged.php @@ -22,7 +22,7 @@ public static function canView(): bool return auth()->user()->can('List tickets'); } - protected function getHeading(): string + public function getHeading(): string { return __('Time logged by users'); } diff --git a/app/Http/Livewire/Administration/Companies.php b/app/Http/Livewire/Administration/Companies.php index 78120acb..a6011811 100644 --- a/app/Http/Livewire/Administration/Companies.php +++ b/app/Http/Livewire/Administration/Companies.php @@ -20,6 +20,7 @@ use pxlrbt\FilamentExcel\Actions\Tables\ExportAction; use pxlrbt\FilamentExcel\Columns\Column; use pxlrbt\FilamentExcel\Exports\ExcelExport; +use Filament\Support\Contracts\TranslatableContentDriver; class Companies extends Component implements HasTable { @@ -29,6 +30,15 @@ class Companies extends Component implements HasTable protected $listeners = ['companySaved', 'companyDeleted']; + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + public function render() { return view('livewire.administration.companies'); @@ -124,7 +134,7 @@ protected function getTableHeaderActions(): array ExportAction::make() ->label(__('Export')) ->color('success') - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->exports([ ExcelExport::make() ->askForWriterType() diff --git a/app/Http/Livewire/Administration/Roles.php b/app/Http/Livewire/Administration/Roles.php index 9bc4d92f..eb7085cf 100644 --- a/app/Http/Livewire/Administration/Roles.php +++ b/app/Http/Livewire/Administration/Roles.php @@ -17,6 +17,7 @@ use pxlrbt\FilamentExcel\Columns\Column; use pxlrbt\FilamentExcel\Exports\ExcelExport; use Spatie\Permission\Models\Role; +use Filament\Support\Contracts\TranslatableContentDriver; class Roles extends Component implements HasTable { @@ -26,6 +27,15 @@ class Roles extends Component implements HasTable protected $listeners = ['roleSaved', 'roleDeleted']; + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + public function render() { return view('livewire.administration.roles'); @@ -92,7 +102,7 @@ protected function getTableHeaderActions(): array ExportAction::make() ->label(__('Export')) ->color('success') - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->exports([ ExcelExport::make() ->askForWriterType() diff --git a/app/Http/Livewire/Administration/TicketPriorities.php b/app/Http/Livewire/Administration/TicketPriorities.php index 24110b49..2454d209 100644 --- a/app/Http/Livewire/Administration/TicketPriorities.php +++ b/app/Http/Livewire/Administration/TicketPriorities.php @@ -16,6 +16,7 @@ use pxlrbt\FilamentExcel\Actions\Tables\ExportAction; use pxlrbt\FilamentExcel\Columns\Column; use pxlrbt\FilamentExcel\Exports\ExcelExport; +use Filament\Support\Contracts\TranslatableContentDriver; class TicketPriorities extends Component implements HasTable { @@ -25,6 +26,15 @@ class TicketPriorities extends Component implements HasTable protected $listeners = ['prioritySaved', 'priorityDeleted']; + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + public function render() { return view('livewire.administration.ticket-priorities'); @@ -96,7 +106,7 @@ protected function getTableHeaderActions(): array ExportAction::make() ->label(__('Export')) ->color('success') - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->exports([ ExcelExport::make() ->askForWriterType() diff --git a/app/Http/Livewire/Administration/TicketStatuses.php b/app/Http/Livewire/Administration/TicketStatuses.php index 9f15a63d..61a6f270 100644 --- a/app/Http/Livewire/Administration/TicketStatuses.php +++ b/app/Http/Livewire/Administration/TicketStatuses.php @@ -16,6 +16,7 @@ use pxlrbt\FilamentExcel\Actions\Tables\ExportAction; use pxlrbt\FilamentExcel\Columns\Column; use pxlrbt\FilamentExcel\Exports\ExcelExport; +use Filament\Support\Contracts\TranslatableContentDriver; class TicketStatuses extends Component implements HasTable { @@ -25,6 +26,15 @@ class TicketStatuses extends Component implements HasTable protected $listeners = ['statusSaved', 'statusDeleted']; + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + public function render() { return view('livewire.administration.ticket-statuses'); @@ -99,7 +109,7 @@ protected function getTableHeaderActions(): array ExportAction::make() ->label(__('Export')) ->color('success') - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->exports([ ExcelExport::make() ->askForWriterType() diff --git a/app/Http/Livewire/Administration/TicketTypes.php b/app/Http/Livewire/Administration/TicketTypes.php index 6050661f..68b8e523 100644 --- a/app/Http/Livewire/Administration/TicketTypes.php +++ b/app/Http/Livewire/Administration/TicketTypes.php @@ -15,6 +15,7 @@ use pxlrbt\FilamentExcel\Actions\Tables\ExportAction; use pxlrbt\FilamentExcel\Columns\Column; use pxlrbt\FilamentExcel\Exports\ExcelExport; +use Filament\Support\Contracts\TranslatableContentDriver; class TicketTypes extends Component implements HasTable { @@ -24,6 +25,15 @@ class TicketTypes extends Component implements HasTable protected $listeners = ['typeSaved', 'typeDeleted']; + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + public function render() { return view('livewire.administration.ticket-types'); @@ -95,7 +105,7 @@ protected function getTableHeaderActions(): array ExportAction::make() ->label(__('Export')) ->color('success') - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->exports([ ExcelExport::make() ->askForWriterType() diff --git a/app/Http/Livewire/Administration/Users.php b/app/Http/Livewire/Administration/Users.php index 3351d59f..e89a1b14 100644 --- a/app/Http/Livewire/Administration/Users.php +++ b/app/Http/Livewire/Administration/Users.php @@ -19,6 +19,7 @@ use pxlrbt\FilamentExcel\Actions\Tables\ExportAction; use pxlrbt\FilamentExcel\Columns\Column; use pxlrbt\FilamentExcel\Exports\ExcelExport; +use Filament\Support\Contracts\TranslatableContentDriver; class Users extends Component implements HasTable { @@ -28,6 +29,15 @@ class Users extends Component implements HasTable protected $listeners = ['userSaved', 'userDeleted']; + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + public function render() { return view('livewire.administration.users'); @@ -129,7 +139,7 @@ protected function getTableHeaderActions(): array ExportAction::make() ->label(__('Export')) ->color('success') - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->exports([ ExcelExport::make() ->askForWriterType() diff --git a/app/Http/Livewire/Profile.php b/app/Http/Livewire/Profile.php index 0861c493..570827f1 100644 --- a/app/Http/Livewire/Profile.php +++ b/app/Http/Livewire/Profile.php @@ -47,12 +47,20 @@ public function updateProfile() if ($loginColumnValue != $this->user->{$this->loginColumn}) { $this->user->newEmail($loginColumnValue); } - $this->notify("success", __('filament-breezy::default.profile.personal_info.notify')); + // $this->notify("success", __('filament-breezy::default.profile.personal_info.notify')); + Notification::make() + ->title(__('filament-breezy::default.profile.personal_info.notify')) + ->success() + ->send(); } public function resendPending(): void { $this->user->resendPendingEmailVerificationMail(); - $this->notify('success', __('Email verification sent')); + // $this->notify('success', __('Email verification sent')); + Notification::make() + ->title(__('Email verification sent')) + ->success() + ->send(); } } diff --git a/app/Http/Livewire/Projects.php b/app/Http/Livewire/Projects.php index 111f7351..8a9b17fc 100644 --- a/app/Http/Livewire/Projects.php +++ b/app/Http/Livewire/Projects.php @@ -21,6 +21,7 @@ use pxlrbt\FilamentExcel\Actions\Tables\ExportAction; use pxlrbt\FilamentExcel\Columns\Column; use pxlrbt\FilamentExcel\Exports\ExcelExport; +use Filament\Support\Contracts\TranslatableContentDriver; class Projects extends Component implements HasTable { @@ -35,6 +36,15 @@ public function render() return view('livewire.projects'); } + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + /** * Table query definition * @@ -144,7 +154,7 @@ protected function getTableHeaderActions(): array ExportAction::make() ->label(__('Export')) ->color('success') - ->icon('heroicon-o-document-download') + ->icon('heroicon-o-document-arrow-down') ->exports([ ExcelExport::make() ->askForWriterType() diff --git a/app/Http/Livewire/Ticket/Attachments.php b/app/Http/Livewire/Ticket/Attachments.php index e380a2d2..692c598c 100644 --- a/app/Http/Livewire/Ticket/Attachments.php +++ b/app/Http/Livewire/Ticket/Attachments.php @@ -14,6 +14,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Livewire\Component; +use Filament\Support\Contracts\TranslatableContentDriver; class Attachments extends Component implements HasForms, HasTable { @@ -21,6 +22,16 @@ class Attachments extends Component implements HasForms, HasTable public Ticket $ticket; + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + + protected $listeners = [ 'filesUploaded' ]; diff --git a/app/Http/Livewire/Timesheet/TimeLogged.php b/app/Http/Livewire/Timesheet/TimeLogged.php index 8ac91c0c..108e23cf 100644 --- a/app/Http/Livewire/Timesheet/TimeLogged.php +++ b/app/Http/Livewire/Timesheet/TimeLogged.php @@ -11,6 +11,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Livewire\Component; +use Filament\Support\Contracts\TranslatableContentDriver; class TimeLogged extends Component implements HasTable { @@ -18,6 +19,16 @@ class TimeLogged extends Component implements HasTable public Ticket $ticket; + /** + * Implementasi method baru untuk HasTable di Filament v3 + */ + public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver + { + // Jika tidak pakai multi-language, cukup return null + return null; + } + + protected function getFormModel(): Model|string|null { return $this->ticket; diff --git a/app/Jobs/ImportJiraTicketsJob.php b/app/Jobs/ImportJiraTicketsJob.php index 854a7aa8..8588df92 100644 --- a/app/Jobs/ImportJiraTicketsJob.php +++ b/app/Jobs/ImportJiraTicketsJob.php @@ -76,7 +76,7 @@ public function handle() } FilamentNotification::make() ->title(__('Jira importation')) - ->icon('heroicon-o-cloud-download') + ->icon('heroicon-o-arrow-down-tray') ->body(__('Jira tickets successfully imported')) ->sendToDatabase($this->user); } diff --git a/app/Livewire/PublicTicketCheck.php b/app/Livewire/PublicTicketCheck.php new file mode 100644 index 00000000..30467006 --- /dev/null +++ b/app/Livewire/PublicTicketCheck.php @@ -0,0 +1,65 @@ +refreshCaptcha(); + } + + public function refreshCaptcha() + { + $this->captcha_image = captcha_src('flat'); + $this->captcha_input = ''; + } + + public function generateCaptcha() + { + $captchaService = new CaptchaService(); + $captcha = $captchaService->generateCaptcha(); + $this->generated_captcha = $captcha['captcha_code']; + $this->captcha_code = $captcha['captcha_code']; + } + + public function checkTicket() + { + + $this->validate([ + 'ticket_code' => 'required|string', + 'captcha_input' => 'required|captcha', + ], [ + 'captcha_input.captcha' => 'Kode captcha salah!', + 'ticket_code.required' => 'Tiket tidak boleh kosong!', + ]); + + $ticketService = new PublicTicketService(); + $ticket = $ticketService->getTicketByCode($this->ticket_code); + $this->ticket = $ticket; + + if (empty($this->ticket)) { + $this->message = 'Tiket tidak ditemukan!'; + $this->ticket = null; + } else { + $this->message = null; + } + } + + public function render() + { + return view('livewire.public-ticket-check'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 69382700..499dd666 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -14,23 +14,30 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; -use JeffGreco13\FilamentBreezy\Traits\TwoFactorAuthenticatable; +// use JeffGreco13\FilamentBreezy\Traits\TwoFactorAuthenticatable; use Laravel\Sanctum\HasApiTokens; use ProtoneMedia\LaravelVerifyNewEmail\MustVerifyNewEmail; use Ramsey\Uuid\Uuid; use Spatie\Permission\Traits\HasRoles; +use Filament\Panel; class User extends Authenticatable implements MustVerifyEmail, FilamentUser { use HasApiTokens, HasFactory, Notifiable, - TwoFactorAuthenticatable, + // TwoFactorAuthenticatable, HasRoles, HasAvatarUrl, SoftDeletes, MustVerifyNewEmail; + public function canAccessPanel(Panel $panel): bool + { + // Contoh paling sederhana: izinkan semua user + return true; + } + /** * The attributes that are mass assignable. * diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 67c8f5da..ea119198 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -4,81 +4,113 @@ use App\Settings\GeneralSettings; use Filament\Facades\Filament; +use Filament\Assets\FilamentAsset; use Illuminate\Database\QueryException; use Illuminate\Foundation\Vite; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\URL; use Illuminate\Support\HtmlString; use Illuminate\Support\ServiceProvider; +use Filament\Support\Facades\FilamentIcon; class AppServiceProvider extends ServiceProvider { /** * Register any application services. - * - * @return void */ - public function register() + public function register(): void { // } /** * Bootstrap any application services. - * - * @return void */ + // public function boot(): void + // { + // // Configure application settings + // $this->configureApp(); + + // // Register Filament theme, meta, and assets + // Filament::serving(function () { + // // Theme (SCSS compiled via Vite) + // Filament::registerTheme( + // app(Vite::class)('resources/css/filament.scss') + // ); + + // // Favicon / meta + // Filament::pushMeta([ + // new HtmlString(''), + // ]); + + // // Custom CSS / JS via FilamentAsset + // FilamentAsset::registerStyles([ + // 'https://unpkg.com/tippy.js@6/dist/tippy.css', + // ]); + + // FilamentAsset::registerScripts([ + // app(Vite::class)('resources/js/filament.js'), + // ]); + // }); + + // // Register navigation groups + + + // // Force HTTPS if enabled + // if (env('APP_FORCE_HTTPS', false)) { + // URL::forceScheme('https'); + // } + // } + public function boot() { - // Configure application + // Configure general app settings (locale, app name) — aman di CLI $this->configureApp(); - // Register custom Filament theme Filament::serving(function () { - Filament::registerTheme( - app(Vite::class)('resources/css/filament.scss'), - ); - }); + // Theme + Filament::registerTheme(app(Vite::class)('resources/css/filament.scss')); - // Register tippy styles - Filament::registerStyles([ - 'https://unpkg.com/tippy.js@6/dist/tippy.css', - ]); + // Scripts + try { + Filament::registerScripts([ + app(Vite::class)('resources/js/filament.js'), + ]); + } catch (\Exception $e) { + // Manifest belum dibangun, aman di ignore + } - // Register scripts - try { - Filament::registerScripts([ - app(Vite::class)('resources/js/filament.js'), - ]); - } catch (\Exception $e) { - // Manifest not built yet! - } + // Meta / favicon + // Filament::pushMeta([ + // new HtmlString(''), + // ]); - // Add custom meta (favicon) - Filament::pushMeta([ - new HtmlString(''), - ]); + // Navigation groups + $defaultPanel = Filament::getPanel(); + $defaultPanel?->navigationGroups([ + __('Management'), + __('Referential'), + __('Security'), + __('Settings'), + ]); + }); - // Register navigation groups - Filament::registerNavigationGroups([ - __('Management'), - __('Referential'), - __('Security'), - __('Settings'), + FilamentIcon::register([ + 'heroicon-o-ban' => 'heroicon-o-x-circle', // fallback pengganti "ban" + 'lucide-ban' => 'heroicon-o-x-circle', // kalau ada versi lucide + 'default' => 'heroicon-o-circle', // default icon aman ]); - - // Force HTTPS over HTTP - if (env('APP_FORCE_HTTPS') ?? false) { - URL::forceScheme('https'); - } } + + /** + * Configure app settings based on GeneralSettings + */ private function configureApp(): void { try { $settings = app(GeneralSettings::class); + Config::set('app.locale', $settings->site_language ?? config('app.fallback_locale')); Config::set('app.name', $settings->site_name ?? env('APP_NAME')); Config::set('filament.brand', $settings->site_name ?? env('APP_NAME')); @@ -86,13 +118,13 @@ private function configureApp(): void 'app.logo', $settings->site_logo ? asset('storage/' . $settings->site_logo) : asset('favicon.ico') ); - Config::set('filament-breezy.enable_registration', $settings->enable_registration ?? false); - Config::set('filament-socialite.registration', $settings->enable_registration ?? false); - Config::set('filament-socialite.enabled', $settings->enable_social_login ?? false); + Config::set('system.login_form.is_enabled', $settings->enable_login_form ?? false); + Config::set('filament-socialite.enabled', $settings->enable_social_login ?? false); Config::set('services.oidc.is_enabled', $settings->enable_oidc_login ?? false); + } catch (QueryException $e) { - // Error: No database configured yet + // Database belum siap, skip } } } diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php new file mode 100644 index 00000000..8ddfe46c --- /dev/null +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -0,0 +1,74 @@ +default() + ->id('admin') + ->path('') + ->login() + ->colors([ + 'primary' => '#2563eb', + // 'secondary' => '#ffffff', + ]) + ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources') + ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages') + ->pages([ + // Pages\Dashboard::class, + ]) + // ->routes(function () { + // \Illuminate\Support\Facades\Route::get('/kanban/{project}', \App\Filament\Pages\Kanban::class) + // ->name('filament.pages.kanban'); + + // \Illuminate\Support\Facades\Route::get('/scrum/{project}', \App\Filament\Pages\Scrum::class) + // ->name('filament.pages.scrum'); + // }) + // ->routes(function () { + // \Illuminate\Support\Facades\Route::get('/kanban', \App\Filament\Pages\Kanban::class) + // ->name('filament.pages.kanban'); + // }) + // ->routes(function () { + // \Illuminate\Support\Facades\Route::get('/scrum', \App\Filament\Pages\Scrum::class) + // ->name('filament.pages.scrum'); + // }) + ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets') + ->widgets([ + Widgets\AccountWidget::class, + Widgets\FilamentInfoWidget::class, + ]) + ->middleware([ + EncryptCookies::class, + AddQueuedCookiesToResponse::class, + StartSession::class, + AuthenticateSession::class, + ShareErrorsFromSession::class, + VerifyCsrfToken::class, + SubstituteBindings::class, + DisableBladeIconComponents::class, + DispatchServingFilamentEvent::class, + ]) + ->authMiddleware([ + // Authenticate::class, + ]); + } +} diff --git a/catatan_rilis.md b/catatan_rilis.md index c0ec010a..29149b68 100644 --- a/catatan_rilis.md +++ b/catatan_rilis.md @@ -11,3 +11,4 @@ Di rilis v2507.0.0 berisi penambahan fitur dan perbaikan lain sesuai dengan pela #### Perubahan Teknis #### Peningkatan Keamanan +1. [#23](https://github.com/OpenSID/help-desk/issues/23) Update laravel 10, livewire 3, filament 3 diff --git a/composer.json b/composer.json index 73f011b4..5a1ad454 100644 --- a/composer.json +++ b/composer.json @@ -9,15 +9,16 @@ "ext-iconv": "*", "devaslanphp/filament-avatar": "^1.0", "doctrine/dbal": "^3.5", - "dutchcodingcompany/filament-socialite": "^0.2.2", - "filament/filament": "^2.16", - "filament/spatie-laravel-media-library-plugin": "^2.16", - "filament/spatie-laravel-settings-plugin": "^2.16", - "guava/filament-icon-picker": "^1.3", + "dutchcodingcompany/filament-socialite": "^2.4", + "filament/actions": "^3.3", + "filament/filament": "^3.2", + "filament/infolists": "^3.3", + "filament/notifications": "^3.3", + "filament/spatie-laravel-media-library-plugin": "^3.0", + "filament/spatie-laravel-settings-plugin": "^3.0", + "filament/tables": "^3.3", + "guava/filament-icon-picker": "^2.3", "guzzlehttp/guzzle": "^7.2", - "invaders-xx/filament-kanban-board": "*", - "jeffgreco13/filament-breezy": "^1.4", - "laravel/framework": "^9.19", "laravel/sanctum": "^3.0", "laravel/tinker": "^2.7", "league/html-to-markdown": "^5.1", @@ -35,12 +36,13 @@ "require-dev": { "fakerphp/faker": "^1.9.1", "kkomelin/laravel-translatable-string-exporter": "^1.17", + "laravel/framework": "^10.0", "laravel/pint": "^1.0", "laravel/sail": "^1.0.1", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^6.1", "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" + "spatie/laravel-ignition": "^2.0" }, "autoload": { "psr-4": { @@ -77,7 +79,8 @@ ], "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" + "@php artisan package:discover --ansi", + "@php artisan filament:upgrade" ], "post-update-cmd": [ "@php artisan vendor:publish --tag=laravel-assets --ansi --force", diff --git a/composer.lock b/composer.lock index 1c6031b7..2faa4139 100644 --- a/composer.lock +++ b/composer.lock @@ -4,153 +4,96 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "64ff8f71b98307f0aa7f70128f9fed55", + "content-hash": "83409f77b2801469846603f9c334ffc1", "packages": [ { - "name": "akaunting/laravel-money", - "version": "4.0.1", + "name": "anourvalar/eloquent-serialize", + "version": "1.3.4", "source": { "type": "git", - "url": "https://github.com/akaunting/laravel-money.git", - "reference": "df99d0f5d415490ef7e79362c3b694e8cc8af903" + "url": "https://github.com/AnourValar/eloquent-serialize.git", + "reference": "0934a98866e02b73e38696961a9d7984b834c9d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/akaunting/laravel-money/zipball/df99d0f5d415490ef7e79362c3b694e8cc8af903", - "reference": "df99d0f5d415490ef7e79362c3b694e8cc8af903", + "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/0934a98866e02b73e38696961a9d7984b834c9d9", + "reference": "0934a98866e02b73e38696961a9d7984b834c9d9", "shasum": "" }, "require": { - "illuminate/contracts": "^9.0|^10.0", - "illuminate/support": "^9.0|^10.0", - "illuminate/validation": "^9.0|^10.0", - "illuminate/view": "^9.0|^10.0", - "php": "^8.0", - "vlucas/phpdotenv": "^5.4.1" + "laravel/framework": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.4|^8.0" }, "require-dev": { - "orchestra/testbench": "^7.4|^8.0", - "phpunit/phpunit": "^9.5|^10.0", - "vimeo/psalm": "^4.23" + "friendsofphp/php-cs-fixer": "^3.26", + "laravel/legacy-factories": "^1.1", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^9.5|^10.5|^11.0", + "psalm/plugin-laravel": "^2.8|^3.0", + "squizlabs/php_codesniffer": "^3.7" }, "type": "library", "extra": { "laravel": { - "providers": [ - "Akaunting\\Money\\Provider" - ] + "aliases": { + "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade" + } } }, "autoload": { - "files": [ - "src/helpers.php" - ], "psr-4": { - "Akaunting\\Money\\": "src" + "AnourValar\\EloquentSerialize\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Denis Duliçi", - "email": "info@akaunting.com", - "homepage": "https://akaunting.com", - "role": "Developer" - } - ], - "description": "Currency formatting and conversion package for Laravel", + "description": "Laravel Query Builder (Eloquent) serialization", + "homepage": "https://github.com/AnourValar/eloquent-serialize", "keywords": [ - "convert", - "currency", - "format", + "anourvalar", + "builder", + "copy", + "eloquent", + "job", "laravel", - "money" - ], - "support": { - "issues": "https://github.com/akaunting/laravel-money/issues", - "source": "https://github.com/akaunting/laravel-money/tree/4.0.1" - }, - "time": "2023-03-16T14:39:27+00:00" - }, - { - "name": "bacon/bacon-qr-code", - "version": "2.0.8", - "source": { - "type": "git", - "url": "https://github.com/Bacon/BaconQrCode.git", - "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22", - "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22", - "shasum": "" - }, - "require": { - "dasprid/enum": "^1.0.3", - "ext-iconv": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phly/keep-a-changelog": "^2.1", - "phpunit/phpunit": "^7 | ^8 | ^9", - "spatie/phpunit-snapshot-assertions": "^4.2.9", - "squizlabs/php_codesniffer": "^3.4" - }, - "suggest": { - "ext-imagick": "to generate QR code images" - }, - "type": "library", - "autoload": { - "psr-4": { - "BaconQrCode\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Ben Scholzen 'DASPRiD'", - "email": "mail@dasprids.de", - "homepage": "https://dasprids.de/", - "role": "Developer" - } + "query", + "querybuilder", + "queue", + "serializable", + "serialization", + "serialize" ], - "description": "BaconQrCode is a QR code generator for PHP.", - "homepage": "https://github.com/Bacon/BaconQrCode", "support": { - "issues": "https://github.com/Bacon/BaconQrCode/issues", - "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8" + "issues": "https://github.com/AnourValar/eloquent-serialize/issues", + "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.3.4" }, - "time": "2022-12-07T17:46:57+00:00" + "time": "2025-07-30T15:45:57+00:00" }, { "name": "blade-ui-kit/blade-heroicons", - "version": "1.6.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/driesvints/blade-heroicons.git", - "reference": "3c20f2d6fb004f434dd3e815b222671449c66903" + "reference": "4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/driesvints/blade-heroicons/zipball/3c20f2d6fb004f434dd3e815b222671449c66903", - "reference": "3c20f2d6fb004f434dd3e815b222671449c66903", + "url": "https://api.github.com/repos/driesvints/blade-heroicons/zipball/4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19", + "reference": "4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19", "shasum": "" }, "require": { - "blade-ui-kit/blade-icons": "^1.1", - "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", - "php": "^7.4|^8.0" + "blade-ui-kit/blade-icons": "^1.6", + "illuminate/support": "^9.0|^10.0|^11.0|^12.0", + "php": "^8.0" }, "require-dev": { - "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", - "phpunit/phpunit": "^9.0|^10.0|^11.0" + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0" }, "type": "library", "extra": { @@ -184,19 +127,19 @@ ], "support": { "issues": "https://github.com/driesvints/blade-heroicons/issues", - "source": "https://github.com/driesvints/blade-heroicons/tree/1.6.0" + "source": "https://github.com/driesvints/blade-heroicons/tree/2.6.0" }, "funding": [ { - "url": "https://www.paypal.me/driesvints", - "type": "custom" + "url": "https://github.com/sponsors/driesvints", + "type": "github" }, { - "url": "https://github.com/driesvints", - "type": "github" + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" } ], - "time": "2025-06-27T08:38:25+00:00" + "time": "2025-02-13T20:53:33+00:00" }, { "name": "blade-ui-kit/blade-icons", @@ -281,25 +224,25 @@ }, { "name": "brick/math", - "version": "0.11.0", + "version": "0.12.3", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^8.1" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "5.0.0" + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "6.8.8" }, "type": "library", "autoload": { @@ -319,12 +262,17 @@ "arithmetic", "bigdecimal", "bignum", + "bignumber", "brick", - "math" + "decimal", + "integer", + "math", + "mathematics", + "rational" ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.11.0" + "source": "https://github.com/brick/math/tree/0.12.3" }, "funding": [ { @@ -332,7 +280,7 @@ "type": "github" } ], - "time": "2023-01-15T23:15:59+00:00" + "time": "2025-02-28T13:11:00+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -612,27 +560,27 @@ }, { "name": "danharrin/livewire-rate-limiting", - "version": "v1.3.1", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/danharrin/livewire-rate-limiting.git", - "reference": "1a1b299e20de61f88ed6e94ea0bbcfc33aab1ddb" + "reference": "14dde653a9ae8f38af07a0ba4921dc046235e1a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/1a1b299e20de61f88ed6e94ea0bbcfc33aab1ddb", - "reference": "1a1b299e20de61f88ed6e94ea0bbcfc33aab1ddb", + "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/14dde653a9ae8f38af07a0ba4921dc046235e1a0", + "reference": "14dde653a9ae8f38af07a0ba4921dc046235e1a0", "shasum": "" }, "require": { - "illuminate/support": "^9.0|^10.0|^11.0", + "illuminate/support": "^9.0|^10.0|^11.0|^12.0", "php": "^8.0" }, "require-dev": { "livewire/livewire": "^3.0", "livewire/volt": "^1.3", - "orchestra/testbench": "^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.0|^10.0" + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.0|^10.0|^11.5.3" }, "type": "library", "autoload": { @@ -662,57 +610,7 @@ "type": "github" } ], - "time": "2024-05-06T09:10:03+00:00" - }, - { - "name": "dasprid/enum", - "version": "1.0.6", - "source": { - "type": "git", - "url": "https://github.com/DASPRiD/Enum.git", - "reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/8dfd07c6d2cf31c8da90c53b83c026c7696dda90", - "reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90", - "shasum": "" - }, - "require": { - "php": ">=7.1 <9.0" - }, - "require-dev": { - "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", - "squizlabs/php_codesniffer": "*" - }, - "type": "library", - "autoload": { - "psr-4": { - "DASPRiD\\Enum\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Ben Scholzen 'DASPRiD'", - "email": "mail@dasprids.de", - "homepage": "https://dasprids.de/", - "role": "Developer" - } - ], - "description": "PHP 7.1 enum implementation", - "keywords": [ - "enum", - "map" - ], - "support": { - "issues": "https://github.com/DASPRiD/Enum/issues", - "source": "https://github.com/DASPRiD/Enum/tree/1.0.6" - }, - "time": "2024-08-09T14:30:48+00:00" + "time": "2025-02-21T08:52:11+00:00" }, { "name": "devaslanphp/filament-avatar", @@ -846,16 +744,16 @@ }, { "name": "doctrine/dbal", - "version": "3.10.1", + "version": "3.10.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "3626601014388095d3af9de7e9e958623b7ef005" + "reference": "65edaca19a752730f290ec2fb89d593cb40afb43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/3626601014388095d3af9de7e9e958623b7ef005", - "reference": "3626601014388095d3af9de7e9e958623b7ef005", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/65edaca19a752730f290ec2fb89d593cb40afb43", + "reference": "65edaca19a752730f290ec2fb89d593cb40afb43", "shasum": "" }, "require": { @@ -871,14 +769,14 @@ }, "require-dev": { "doctrine/cache": "^1.11|^2.0", - "doctrine/coding-standard": "13.0.0", + "doctrine/coding-standard": "14.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "2.1.17", + "phpstan/phpstan": "2.1.30", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "9.6.23", - "slevomat/coding-standard": "8.16.2", - "squizlabs/php_codesniffer": "3.13.1", + "phpunit/phpunit": "9.6.29", + "slevomat/coding-standard": "8.24.0", + "squizlabs/php_codesniffer": "4.0.0", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0" }, @@ -940,7 +838,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.10.1" + "source": "https://github.com/doctrine/dbal/tree/3.10.3" }, "funding": [ { @@ -956,7 +854,7 @@ "type": "tidelift" } ], - "time": "2025-08-05T12:18:06+00:00" + "time": "2025-10-09T09:05:12+00:00" }, { "name": "doctrine/deprecations", @@ -1331,43 +1229,39 @@ }, { "name": "dutchcodingcompany/filament-socialite", - "version": "0.2.6", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/DutchCodingCompany/filament-socialite.git", - "reference": "608182ba6fbcee9bc38ea4019f9605f4f8a06059" + "reference": "be7e58a1e73f9222f288f0ab04b1945198310e62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DutchCodingCompany/filament-socialite/zipball/608182ba6fbcee9bc38ea4019f9605f4f8a06059", - "reference": "608182ba6fbcee9bc38ea4019f9605f4f8a06059", + "url": "https://api.github.com/repos/DutchCodingCompany/filament-socialite/zipball/be7e58a1e73f9222f288f0ab04b1945198310e62", + "reference": "be7e58a1e73f9222f288f0ab04b1945198310e62", "shasum": "" }, "require": { - "filament/filament": "^2.0", - "illuminate/contracts": "^8.0|^9.0|^10.0", + "filament/filament": "^3.2.72", + "illuminate/contracts": "^10.0|^11.0|^12.0", "laravel/socialite": "^5.5", - "livewire/livewire": "^2.10", - "php": "^8.0", + "php": "^8.1", "spatie/laravel-package-tools": "^1.9.2" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.8", - "nunomaduro/collision": "^6.0", - "nunomaduro/larastan": "^2.0.1", - "orchestra/testbench": "^7.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", - "pestphp/pest-plugin-livewire": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", - "spatie/laravel-ray": "^1.26" + "larastan/larastan": "^2.9|^3.0", + "nunomaduro/collision": "^7.0|^8.1", + "orchestra/testbench": "^8.0|^9.0|^10.0", + "phpunit/phpunit": "^10.0|^11.5.3", + "rector/rector": "^0.19.8|^2.0" }, "suggest": { "owenvoke/blade-fontawesome": "^2.0" }, + "bin": [ + "bin/upgrade-v2" + ], "type": "library", "extra": { "laravel": { @@ -1381,7 +1275,9 @@ }, "autoload": { "psr-4": { + "Utils\\Rector\\": "utils/rector/src", "DutchCodingCompany\\FilamentSocialite\\": "src", + "DutchCodingCompany\\FilamentSocialite\\Tests\\": "tests", "DutchCodingCompany\\FilamentSocialite\\Database\\Factories\\": "database/factories" } }, @@ -1394,6 +1290,16 @@ "name": "Marco Boers", "email": "m@rcoboe.rs", "role": "Developer" + }, + { + "name": "Tom Janssen", + "email": "dododedodonl@thor.edu", + "role": "Developer" + }, + { + "name": "Bram Raaijmakers", + "email": "bram@dutchcodingcompany.com", + "role": "Developer" } ], "description": "Social login for Filament through Laravel Socialite", @@ -1405,9 +1311,9 @@ ], "support": { "issues": "https://github.com/DutchCodingCompany/filament-socialite/issues", - "source": "https://github.com/DutchCodingCompany/filament-socialite/tree/0.2.6" + "source": "https://github.com/DutchCodingCompany/filament-socialite/tree/2.4.0" }, - "time": "2023-07-03T11:19:26+00:00" + "time": "2025-02-25T10:24:58+00:00" }, { "name": "egulias/email-validator", @@ -1537,38 +1443,93 @@ }, "time": "2024-11-01T03:51:45+00:00" }, + { + "name": "filament/actions", + "version": "v3.3.43", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/actions.git", + "reference": "4582f2da9ed0660685b8e0849d32f106bc8a4b2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/4582f2da9ed0660685b8e0849d32f106bc8a4b2d", + "reference": "4582f2da9ed0660685b8e0849d32f106bc8a4b2d", + "shasum": "" + }, + "require": { + "anourvalar/eloquent-serialize": "^1.2", + "filament/forms": "self.version", + "filament/infolists": "self.version", + "filament/notifications": "self.version", + "filament/support": "self.version", + "illuminate/contracts": "^10.45|^11.0|^12.0", + "illuminate/database": "^10.45|^11.0|^12.0", + "illuminate/support": "^10.45|^11.0|^12.0", + "league/csv": "^9.16", + "openspout/openspout": "^4.23", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Actions\\ActionsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Actions\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful action modals to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2025-09-28T22:06:00+00:00" + }, { "name": "filament/filament", - "version": "v2.17.58", + "version": "v3.3.43", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "8226efb5030b431d68d2c8ad88b1cd11dca08ee8" + "reference": "f61544ea879633e42e2ae8a2eafe034aecdad2b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/8226efb5030b431d68d2c8ad88b1cd11dca08ee8", - "reference": "8226efb5030b431d68d2c8ad88b1cd11dca08ee8", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/f61544ea879633e42e2ae8a2eafe034aecdad2b2", + "reference": "f61544ea879633e42e2ae8a2eafe034aecdad2b2", "shasum": "" }, "require": { - "danharrin/livewire-rate-limiting": "^0.3|^1.0", + "danharrin/livewire-rate-limiting": "^0.3|^1.0|^2.0", + "filament/actions": "self.version", "filament/forms": "self.version", + "filament/infolists": "self.version", "filament/notifications": "self.version", "filament/support": "self.version", "filament/tables": "self.version", - "illuminate/auth": "^8.6|^9.0|^10.0", - "illuminate/console": "^8.6|^9.0|^10.0", - "illuminate/contracts": "^8.6|^9.0|^10.0", - "illuminate/cookie": "^8.6|^9.0|^10.0", - "illuminate/database": "^8.6|^9.0|^10.0", - "illuminate/http": "^8.6|^9.0|^10.0", - "illuminate/routing": "^8.6|^9.0|^10.0", - "illuminate/session": "^8.6|^9.0|^10.0", - "illuminate/support": "^8.6|^9.0|^10.0", - "illuminate/view": "^8.6|^9.0|^10.0", - "livewire/livewire": "^2.10.7", - "php": "^8.0", + "filament/widgets": "self.version", + "illuminate/auth": "^10.45|^11.0|^12.0", + "illuminate/console": "^10.45|^11.0|^12.0", + "illuminate/contracts": "^10.45|^11.0|^12.0", + "illuminate/cookie": "^10.45|^11.0|^12.0", + "illuminate/database": "^10.45|^11.0|^12.0", + "illuminate/http": "^10.45|^11.0|^12.0", + "illuminate/routing": "^10.45|^11.0|^12.0", + "illuminate/session": "^10.45|^11.0|^12.0", + "illuminate/support": "^10.45|^11.0|^12.0", + "illuminate/view": "^10.45|^11.0|^12.0", + "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, "type": "library", @@ -1581,6 +1542,7 @@ }, "autoload": { "files": [ + "src/global_helpers.php", "src/helpers.php" ], "psr-4": { @@ -1591,42 +1553,40 @@ "license": [ "MIT" ], - "description": "Effortlessly build TALL-powered admin panels.", + "description": "A collection of full-stack components for accelerated Laravel app development.", "homepage": "https://github.com/filamentphp/filament", "support": { "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-03-25T10:29:11+00:00" + "time": "2025-09-28T22:06:09+00:00" }, { "name": "filament/forms", - "version": "v2.17.58", + "version": "v3.3.43", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "70706609e581f63b9cc6b6344a3643a9ce4107d3" + "reference": "da5401bf3684b6abc6cf1d8e152f01b25d815319" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/70706609e581f63b9cc6b6344a3643a9ce4107d3", - "reference": "70706609e581f63b9cc6b6344a3643a9ce4107d3", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/da5401bf3684b6abc6cf1d8e152f01b25d815319", + "reference": "da5401bf3684b6abc6cf1d8e152f01b25d815319", "shasum": "" }, "require": { - "blade-ui-kit/blade-heroicons": "^1.2", "danharrin/date-format-converter": "^0.3", - "filament/notifications": "self.version", + "filament/actions": "self.version", "filament/support": "self.version", - "illuminate/console": "^8.6|^9.0|^10.0", - "illuminate/contracts": "^8.6|^9.0|^10.0", - "illuminate/database": "^8.6|^9.0|^10.0", - "illuminate/filesystem": "^8.6|^9.0|^10.0", - "illuminate/support": "^8.6|^9.0|^10.0", - "illuminate/validation": "^8.6|^9.0|^10.0", - "illuminate/view": "^8.6|^9.0|^10.0", - "livewire/livewire": "^2.10.7", - "php": "^8.0", + "illuminate/console": "^10.45|^11.0|^12.0", + "illuminate/contracts": "^10.45|^11.0|^12.0", + "illuminate/database": "^10.45|^11.0|^12.0", + "illuminate/filesystem": "^10.45|^11.0|^12.0", + "illuminate/support": "^10.45|^11.0|^12.0", + "illuminate/validation": "^10.45|^11.0|^12.0", + "illuminate/view": "^10.45|^11.0|^12.0", + "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, "type": "library", @@ -1649,37 +1609,87 @@ "license": [ "MIT" ], - "description": "Effortlessly build TALL-powered forms.", + "description": "Easily add beautiful forms to any Livewire component.", "homepage": "https://github.com/filamentphp/filament", "support": { "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-03-25T10:29:15+00:00" + "time": "2025-10-06T21:42:10+00:00" + }, + { + "name": "filament/infolists", + "version": "v3.3.43", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/infolists.git", + "reference": "4533c2ccb6ef06ab7f27d81e27be0cdd4f5e72de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/4533c2ccb6ef06ab7f27d81e27be0cdd4f5e72de", + "reference": "4533c2ccb6ef06ab7f27d81e27be0cdd4f5e72de", + "shasum": "" + }, + "require": { + "filament/actions": "self.version", + "filament/support": "self.version", + "illuminate/console": "^10.45|^11.0|^12.0", + "illuminate/contracts": "^10.45|^11.0|^12.0", + "illuminate/database": "^10.45|^11.0|^12.0", + "illuminate/filesystem": "^10.45|^11.0|^12.0", + "illuminate/support": "^10.45|^11.0|^12.0", + "illuminate/view": "^10.45|^11.0|^12.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Infolists\\InfolistsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Infolists\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful read-only infolists to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2025-08-12T13:15:27+00:00" }, { "name": "filament/notifications", - "version": "v2.17.58", + "version": "v3.3.43", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "f972041f9a5d8aac35ec0e7c193a96f2a44b1032" + "reference": "adc118c7fc34a423f3c01d6936ad0316f489949c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/f972041f9a5d8aac35ec0e7c193a96f2a44b1032", - "reference": "f972041f9a5d8aac35ec0e7c193a96f2a44b1032", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/adc118c7fc34a423f3c01d6936ad0316f489949c", + "reference": "adc118c7fc34a423f3c01d6936ad0316f489949c", "shasum": "" }, "require": { - "blade-ui-kit/blade-heroicons": "^1.2", + "filament/actions": "self.version", "filament/support": "self.version", - "illuminate/contracts": "^8.6|^9.0|^10.0", - "illuminate/filesystem": "^8.6|^9.0|^10.0", - "illuminate/notifications": "^8.6|^9.0|^10.0", - "illuminate/support": "^8.6|^9.0|^10.0", - "livewire/livewire": "^2.10.7", - "php": "^8.0", + "illuminate/contracts": "^10.45|^11.0|^12.0", + "illuminate/filesystem": "^10.45|^11.0|^12.0", + "illuminate/notifications": "^10.45|^11.0|^12.0", + "illuminate/support": "^10.45|^11.0|^12.0", + "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, "type": "library", @@ -1702,32 +1712,33 @@ "license": [ "MIT" ], - "description": "Effortlessly build TALL-powered notifications.", + "description": "Easily add beautiful notifications to any Livewire app.", "homepage": "https://github.com/filamentphp/filament", "support": { "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-03-25T10:29:13+00:00" + "time": "2025-07-08T20:42:18+00:00" }, { "name": "filament/spatie-laravel-media-library-plugin", - "version": "v2.17.58", + "version": "v3.3.43", "source": { "type": "git", "url": "https://github.com/filamentphp/spatie-laravel-media-library-plugin.git", - "reference": "1481693a308993548647e41103e07991ef52a2f2" + "reference": "bd7c12baf30cc66b2f088bd0257b12071e15addf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/spatie-laravel-media-library-plugin/zipball/1481693a308993548647e41103e07991ef52a2f2", - "reference": "1481693a308993548647e41103e07991ef52a2f2", + "url": "https://api.github.com/repos/filamentphp/spatie-laravel-media-library-plugin/zipball/bd7c12baf30cc66b2f088bd0257b12071e15addf", + "reference": "bd7c12baf30cc66b2f088bd0257b12071e15addf", "shasum": "" }, "require": { - "illuminate/support": "^8.6|^9.0|^10.0", - "php": "^8.0", - "spatie/laravel-medialibrary": "^9.0|^10.0" + "filament/support": "self.version", + "illuminate/support": "^10.45|^11.0|^12.0", + "php": "^8.1", + "spatie/laravel-medialibrary": "^10.0|^11.0" }, "type": "library", "autoload": { @@ -1745,28 +1756,28 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-05-22T21:18:30+00:00" + "time": "2025-07-08T20:42:14+00:00" }, { "name": "filament/spatie-laravel-settings-plugin", - "version": "v2.17.58", + "version": "v3.3.43", "source": { "type": "git", "url": "https://github.com/filamentphp/spatie-laravel-settings-plugin.git", - "reference": "11c944db9ebd9b47d32040be709dcf1cb587bde8" + "reference": "80c9e960b30890fdc731da262b71255cb39bee31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/spatie-laravel-settings-plugin/zipball/11c944db9ebd9b47d32040be709dcf1cb587bde8", - "reference": "11c944db9ebd9b47d32040be709dcf1cb587bde8", + "url": "https://api.github.com/repos/filamentphp/spatie-laravel-settings-plugin/zipball/80c9e960b30890fdc731da262b71255cb39bee31", + "reference": "80c9e960b30890fdc731da262b71255cb39bee31", "shasum": "" }, "require": { "filament/filament": "self.version", - "illuminate/console": "^8.6|^9.0|^10.0", - "illuminate/filesystem": "^8.6|^9.0|^10.0", - "illuminate/support": "^8.6|^9.0|^10.0", - "php": "^8.0", + "illuminate/console": "^10.45|^11.0|^12.0", + "illuminate/filesystem": "^10.45|^11.0|^12.0", + "illuminate/support": "^10.45|^11.0|^12.0", + "php": "^8.1", "spatie/laravel-settings": "^2.2|^3.0" }, "type": "library", @@ -1792,30 +1803,38 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-05-30T10:44:48+00:00" + "time": "2025-04-23T06:39:48+00:00" }, { "name": "filament/support", - "version": "v2.17.58", + "version": "v3.3.43", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "9982a88704efc58b710c4e6b5000d85a6f4daf56" + "reference": "afafd5e7a2f8cf052f70f989b52d82d0a1df5c78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/9982a88704efc58b710c4e6b5000d85a6f4daf56", - "reference": "9982a88704efc58b710c4e6b5000d85a6f4daf56", + "url": "https://api.github.com/repos/filamentphp/support/zipball/afafd5e7a2f8cf052f70f989b52d82d0a1df5c78", + "reference": "afafd5e7a2f8cf052f70f989b52d82d0a1df5c78", "shasum": "" }, "require": { - "illuminate/contracts": "^8.6|^9.0|^10.0", - "illuminate/support": "^8.6|^9.0|^10.0", - "illuminate/view": "^8.6|^9.0|^10.0", - "php": "^8.0", - "ryangjchandler/blade-capture-directive": "^0.2|^0.3", + "blade-ui-kit/blade-heroicons": "^2.5", + "doctrine/dbal": "^3.2|^4.0", + "ext-intl": "*", + "illuminate/contracts": "^10.45|^11.0|^12.0", + "illuminate/support": "^10.45|^11.0|^12.0", + "illuminate/view": "^10.45|^11.0|^12.0", + "kirschbaum-development/eloquent-power-joins": "^3.0|^4.0", + "livewire/livewire": "^3.5", + "php": "^8.1", + "ryangjchandler/blade-capture-directive": "^0.2|^0.3|^1.0", + "spatie/color": "^1.5", + "spatie/invade": "^1.0|^2.0", "spatie/laravel-package-tools": "^1.9", - "tgalopin/html-sanitizer": "^1.5" + "symfony/console": "^6.0|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0" }, "type": "library", "extra": { @@ -1837,43 +1856,39 @@ "license": [ "MIT" ], - "description": "Associated helper methods and foundation code for Filament packages.", + "description": "Core helper methods and foundation code for all Filament packages.", "homepage": "https://github.com/filamentphp/filament", "support": { "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-07-03T09:23:04+00:00" + "time": "2025-08-12T13:15:44+00:00" }, { "name": "filament/tables", - "version": "v2.17.58", + "version": "v3.3.43", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "e48d02f78c0bfb661068627369b940adf95c02d6" + "reference": "2e1e3aeeeccd6b74e5d038325af52635d1108e4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/e48d02f78c0bfb661068627369b940adf95c02d6", - "reference": "e48d02f78c0bfb661068627369b940adf95c02d6", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/2e1e3aeeeccd6b74e5d038325af52635d1108e4c", + "reference": "2e1e3aeeeccd6b74e5d038325af52635d1108e4c", "shasum": "" }, "require": { - "akaunting/laravel-money": "^1.2|^2.0|^3.0|^4.0", - "blade-ui-kit/blade-heroicons": "^1.2", + "filament/actions": "self.version", "filament/forms": "self.version", - "filament/notifications": "self.version", "filament/support": "self.version", - "illuminate/console": "^8.6|^9.0|^10.0", - "illuminate/contracts": "^8.6|^9.0|^10.0", - "illuminate/database": "^8.6|^9.0|^10.0", - "illuminate/filesystem": "^8.6|^9.0|^10.0", - "illuminate/support": "^8.6|^9.0|^10.0", - "illuminate/view": "^8.6|^9.0|^10.0", - "livewire/livewire": "^2.10.7", - "php": "^8.0", - "spatie/invade": "^1.0", + "illuminate/console": "^10.45|^11.0|^12.0", + "illuminate/contracts": "^10.45|^11.0|^12.0", + "illuminate/database": "^10.45|^11.0|^12.0", + "illuminate/filesystem": "^10.45|^11.0|^12.0", + "illuminate/support": "^10.45|^11.0|^12.0", + "illuminate/view": "^10.45|^11.0|^12.0", + "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, "type": "library", @@ -1893,13 +1908,57 @@ "license": [ "MIT" ], - "description": "Effortlessly build TALL-powered tables.", + "description": "Easily add beautiful tables to any Livewire component.", "homepage": "https://github.com/filamentphp/filament", "support": { "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-03-21T08:32:18+00:00" + "time": "2025-09-17T10:47:13+00:00" + }, + { + "name": "filament/widgets", + "version": "v3.3.43", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/widgets.git", + "reference": "5b956f884aaef479f6091463cb829e7c9f2afc2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/5b956f884aaef479f6091463cb829e7c9f2afc2c", + "reference": "5b956f884aaef479f6091463cb829e7c9f2afc2c", + "shasum": "" + }, + "require": { + "filament/support": "self.version", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Widgets\\WidgetsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Widgets\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful dashboard widgets to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2025-06-12T15:11:14+00:00" }, { "name": "firebase/php-jwt", @@ -2099,25 +2158,24 @@ }, { "name": "guava/filament-icon-picker", - "version": "1.3.6", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/lukas-frey/filament-icon-picker.git", - "reference": "9241cd5731c89788014d9f3a51fbadfe7e1831dd" + "reference": "a9c2709db2df2d658fd045022d0300c2fa8a6fba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lukas-frey/filament-icon-picker/zipball/9241cd5731c89788014d9f3a51fbadfe7e1831dd", - "reference": "9241cd5731c89788014d9f3a51fbadfe7e1831dd", + "url": "https://api.github.com/repos/lukas-frey/filament-icon-picker/zipball/a9c2709db2df2d658fd045022d0300c2fa8a6fba", + "reference": "a9c2709db2df2d658fd045022d0300c2fa8a6fba", "shasum": "" }, "require": { - "filament/filament": "^2.0", - "illuminate/contracts": "^9.0|^10.0", + "filament/filament": "^3.0@stable", "php": "^8.0" }, "require-dev": { - "orchestra/testbench": "^7.0|^8.0" + "orchestra/testbench": "^7.0|^8.0|^9.0" }, "type": "library", "extra": { @@ -2145,7 +2203,7 @@ "description": "A filament plugin that adds an icon picker field.", "support": { "issues": "https://github.com/lukas-frey/filament-icon-picker/issues", - "source": "https://github.com/lukas-frey/filament-icon-picker/tree/1.3.6" + "source": "https://github.com/lukas-frey/filament-icon-picker/tree/2.3.1" }, "funding": [ { @@ -2153,7 +2211,7 @@ "type": "github" } ], - "time": "2023-02-18T16:33:56+00:00" + "time": "2025-08-19T12:48:35+00:00" }, { "name": "guzzlehttp/guzzle", @@ -2651,127 +2709,41 @@ "time": "2022-05-21T17:30:32+00:00" }, { - "name": "invaders-xx/filament-kanban-board", - "version": "0.4", + "name": "kirschbaum-development/eloquent-power-joins", + "version": "4.1.0", "source": { "type": "git", - "url": "https://github.com/invaders-xx/filament-kanban-board.git", - "reference": "0956386ab0e1f0e610b6dce2e92815c0005109dc" + "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git", + "reference": "d6c5cb1b90c0bd033a8f9159a78fd6a23e9ac5c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/invaders-xx/filament-kanban-board/zipball/0956386ab0e1f0e610b6dce2e92815c0005109dc", - "reference": "0956386ab0e1f0e610b6dce2e92815c0005109dc", + "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/d6c5cb1b90c0bd033a8f9159a78fd6a23e9ac5c2", + "reference": "d6c5cb1b90c0bd033a8f9159a78fd6a23e9ac5c2", "shasum": "" }, "require": { - "filament/filament": "^2.0", - "illuminate/contracts": "^8.74|^9.0|^10.0", - "php": "^8.0", - "spatie/laravel-package-tools": "^1.9.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.8", - "nunomaduro/collision": "^6.0|^7.0", - "nunomaduro/larastan": "^2.0.1", - "orchestra/testbench": "^7.0|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5|^10.0", - "spatie/laravel-ray": "^1.26" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "FilamentKanbanBoard": "InvadersXX\\FilamentKanbanBoard\\Facades\\FilamentKanbanBoard" - }, - "providers": [ - "InvadersXX\\FilamentKanbanBoard\\FilamentKanbanBoardServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "InvadersXX\\FilamentKanbanBoard\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "David Vincent", - "email": "envahisseur@gmail.com", - "role": "Developer" - } - ], - "description": "Add a Kanban page to filament", - "homepage": "https://github.com/invaders-xx/filament-kanban-board", - "keywords": [ - "filament", - "filament-kanban-board", - "invaders-xx", - "laravel" - ], - "support": { - "issues": "https://github.com/invaders-xx/filament-kanban-board/issues", - "source": "https://github.com/invaders-xx/filament-kanban-board/tree/0.4" - }, - "time": "2023-03-02T06:50:34+00:00" - }, - { - "name": "jeffgreco13/filament-breezy", - "version": "v1.5.10", - "source": { - "type": "git", - "url": "https://github.com/jeffgreco13/filament-breezy.git", - "reference": "843d39731738c2073237025d607b041c82ba6196" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jeffgreco13/filament-breezy/zipball/843d39731738c2073237025d607b041c82ba6196", - "reference": "843d39731738c2073237025d607b041c82ba6196", - "shasum": "" - }, - "require": { - "bacon/bacon-qr-code": "^2.0", - "filament/filament": "^2.15", - "php": "^8.0|^8.1", - "pragmarx/google2fa": "^7.0|^8.0", - "spatie/laravel-package-tools": "^1.9.2" + "illuminate/database": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "php": "^8.1" }, "require-dev": { - "nunomaduro/collision": "^5.0|^6.0", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.0|^7.0|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", - "spatie/laravel-ray": "^1.26" + "friendsofphp/php-cs-fixer": "dev-master", + "laravel/legacy-factories": "^1.0@dev", + "orchestra/testbench": "^8.0|^9.0", + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "laravel": { - "aliases": { - "FilamentBreezy": "JeffGreco13\\FilamentBreezy\\Facades\\FilamentBreezy" - }, "providers": [ - "JeffGreco13\\FilamentBreezy\\FilamentBreezyServiceProvider" + "Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider" ] } }, "autoload": { "psr-4": { - "JeffGreco13\\FilamentBreezy\\": "src", - "JeffGreco13\\FilamentBreezy\\Database\\Factories\\": "database/factories" + "Kirschbaum\\PowerJoins\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2780,40 +2752,42 @@ ], "authors": [ { - "name": "Jeff Greco", - "email": "jeff@jeffpgreco.com", + "name": "Luis Dalmolin", + "email": "luis.nh@gmail.com", "role": "Developer" } ], - "description": "A custom package for Filament with login flow, profile and teams support.", - "homepage": "https://github.com/jeffgreco13/filament-breezy", + "description": "The Laravel magic applied to joins.", + "homepage": "https://github.com/kirschbaum-development/eloquent-power-joins", "keywords": [ - "filament-breezy", - "jeffgreco13", - "laravel" + "eloquent", + "join", + "laravel", + "mysql" ], "support": { - "issues": "https://github.com/jeffgreco13/filament-breezy/issues", - "source": "https://github.com/jeffgreco13/filament-breezy/tree/v1.5.10" + "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues", + "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.1.0" }, - "time": "2024-01-31T15:40:42+00:00" + "time": "2025-02-12T11:14:14+00:00" }, { "name": "laravel/framework", - "version": "v9.52.20", + "version": "v10.49.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "2bb6835af73fcf0d1d0bfb84af71cef236cb8609" + "reference": "f857267b80789327cd3e6b077bcf6df5846cf71b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/2bb6835af73fcf0d1d0bfb84af71cef236cb8609", - "reference": "2bb6835af73fcf0d1d0bfb84af71cef236cb8609", + "url": "https://api.github.com/repos/laravel/framework/zipball/f857267b80789327cd3e6b077bcf6df5846cf71b", + "reference": "f857267b80789327cd3e6b077bcf6df5846cf71b", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.3.2", "egulias/email-validator": "^3.2.1|^4.0", @@ -2826,33 +2800,38 @@ "ext-tokenizer": "*", "fruitcake/php-cors": "^1.2", "guzzlehttp/uri-template": "^1.0", - "laravel/serializable-closure": "^1.2.2", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.62.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", "nunomaduro/termwind": "^1.13", - "php": "^8.0.2", + "php": "^8.1", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.7", - "symfony/console": "^6.0.9", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/uid": "^6.0", - "symfony/var-dumper": "^6.0", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "mockery/mockery": "1.6.8", + "phpunit/phpunit": ">=11.0.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -2883,6 +2862,7 @@ "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", "illuminate/queue": "self.version", "illuminate/redis": "self.version", "illuminate/routing": "self.version", @@ -2896,7 +2876,7 @@ "require-dev": { "ably/ably-php": "^1.0", "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^2.13.3|^3.1.4", + "doctrine/dbal": "^3.5.1", "ext-gmp": "*", "fakerphp/faker": "^1.21", "guzzlehttp/guzzle": "^7.5", @@ -2906,20 +2886,21 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^7.24", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.23.4", "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", - "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9|^2.0.2", - "symfony/cache": "^6.0", - "symfony/http-client": "^6.0" + "phpstan/phpstan": "~1.11.11", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", "ext-apcu": "Required to use the APC cache driver.", "ext-fileinfo": "Required to use the Filesystem class.", "ext-ftp": "Required to use the Flysystem FTP driver.", @@ -2941,27 +2922,29 @@ "mockery/mockery": "Required to use mocking (^1.5.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).", - "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.x-dev" + "dev-master": "10.x-dev" } }, "autoload": { "files": [ + "src/Illuminate/Collections/functions.php", "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], @@ -2994,7 +2977,65 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-01-31T10:09:38+00:00" + "time": "2025-09-30T14:56:54+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.25", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/7b4029a84c37cb2725fc7f011586e2997040bc95", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.25" + }, + "time": "2024-08-12T22:06:33+00:00" }, { "name": "laravel/sanctum", @@ -3450,6 +3491,97 @@ ], "time": "2022-12-11T20:36:23+00:00" }, + { + "name": "league/csv", + "version": "9.26.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "7fce732754d043f3938899e5183e2d0f3d31b571" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/7fce732754d043f3938899e5183e2d0f3d31b571", + "reference": "7fce732754d043f3938899e5183e2d0f3d31b571", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1.2" + }, + "require-dev": { + "ext-dom": "*", + "ext-xdebug": "*", + "friendsofphp/php-cs-fixer": "^3.75.0", + "phpbench/phpbench": "^1.4.1", + "phpstan/phpstan": "^1.12.27", + "phpstan/phpstan-deprecation-rules": "^1.2.1", + "phpstan/phpstan-phpunit": "^1.4.2", + "phpstan/phpstan-strict-rules": "^1.6.2", + "phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.3.6", + "symfony/var-dumper": "^6.4.8 || ^7.3.0" + }, + "suggest": { + "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", + "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters", + "ext-mbstring": "Needed to ease transcoding CSV using mb stream filters", + "ext-mysqli": "Requiered to use the package with the MySQLi extension", + "ext-pdo": "Required to use the package with the PDO extension", + "ext-pgsql": "Requiered to use the package with the PgSQL extension", + "ext-sqlite3": "Required to use the package with the SQLite3 extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "League\\Csv\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "CSV data manipulation made easy in PHP", + "homepage": "https://csv.thephpleague.com", + "keywords": [ + "convert", + "csv", + "export", + "filter", + "import", + "read", + "transform", + "write" + ], + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2025-10-01T11:24:54+00:00" + }, { "name": "league/flysystem", "version": "3.30.0", @@ -3548,69 +3680,15 @@ "shasum": "" }, "require": { - "ext-fileinfo": "*", - "league/flysystem": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\Flysystem\\Local\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Local filesystem adapter for Flysystem.", - "keywords": [ - "Flysystem", - "file", - "files", - "filesystem", - "local" - ], - "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" - }, - "time": "2025-05-21T10:34:19+00:00" - }, - { - "name": "league/glide", - "version": "2.3.2", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/glide.git", - "reference": "b8e946dd87c79a9dce3290707ab90b5b52602813" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/glide/zipball/b8e946dd87c79a9dce3290707ab90b5b52602813", - "reference": "b8e946dd87c79a9dce3290707ab90b5b52602813", - "shasum": "" - }, - "require": { - "intervention/image": "^2.7", - "league/flysystem": "^2.0|^3.0", - "php": "^7.2|^8.0", - "psr/http-message": "^1.0|^2.0" - }, - "require-dev": { - "mockery/mockery": "^1.3.3", - "phpunit/php-token-stream": "^3.1|^4.0", - "phpunit/phpunit": "^8.5|^9.0" + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "type": "library", "autoload": { "psr-4": { - "League\\Glide\\": "src/" + "League\\Flysystem\\Local\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -3619,33 +3697,22 @@ ], "authors": [ { - "name": "Jonathan Reinink", - "email": "jonathan@reinink.ca", - "homepage": "http://reinink.ca" - }, - { - "name": "Titouan Galopin", - "email": "galopintitouan@gmail.com", - "homepage": "https://titouangalopin.com" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "Wonderfully easy on-demand image manipulation library with an HTTP based API.", - "homepage": "http://glide.thephpleague.com", + "description": "Local filesystem adapter for Flysystem.", "keywords": [ - "ImageMagick", - "editing", - "gd", - "image", - "imagick", - "league", - "manipulation", - "processing" + "Flysystem", + "file", + "files", + "filesystem", + "local" ], "support": { - "issues": "https://github.com/thephpleague/glide/issues", - "source": "https://github.com/thephpleague/glide/tree/2.3.2" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" }, - "time": "2025-03-21T13:48:39+00:00" + "time": "2025-05-21T10:34:19+00:00" }, { "name": "league/html-to-markdown", @@ -3934,45 +4001,45 @@ "time": "2025-02-26T04:37:30+00:00" }, { - "name": "league/uri-parser", - "version": "1.4.1", + "name": "league/uri", + "version": "7.5.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/uri-parser.git", - "reference": "671548427e4c932352d9b9279fdfa345bf63fa00" + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-parser/zipball/671548427e4c932352d9b9279fdfa345bf63fa00", - "reference": "671548427e4c932352d9b9279fdfa345bf63fa00", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", "shasum": "" }, "require": { - "php": ">=7.0.0" + "league/uri-interfaces": "^7.5", + "php": "^8.1" }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-phpunit": "^0.9.4", - "phpstan/phpstan-strict-rules": "^0.9.0", - "phpunit/phpunit": "^6.0" + "conflict": { + "league/uri-schemes": "^1.0" }, "suggest": { - "ext-intl": "Allow parsing RFC3987 compliant hosts", - "league/uri-schemes": "Allow validating and normalizing URI parsing results" + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "League\\Uri\\": "src" + "League\\Uri\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -3986,53 +4053,160 @@ "homepage": "https://nyamsprod.com" } ], - "description": "userland URI parser RFC 3986 compliant", - "homepage": "https://github.com/thephpleague/uri-parser", + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", "parse_url", - "parser", + "psr-7", + "query-string", + "querystring", "rfc3986", "rfc3987", + "rfc6570", "uri", - "url" + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" ], "support": { - "issues": "https://github.com/thephpleague/uri-parser/issues", - "source": "https://github.com/thephpleague/uri-parser/tree/master" + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" }, - "abandoned": "league/uri-interfaces", - "time": "2018-11-22T07:55:51+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:18:47+00:00" }, { "name": "livewire/livewire", - "version": "v2.12.8", + "version": "v3.6.4", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "7d657d0dd8761a981f7ac3cd8d71c3b724f3e0b8" + "reference": "ef04be759da41b14d2d129e670533180a44987dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/7d657d0dd8761a981f7ac3cd8d71c3b724f3e0b8", - "reference": "7d657d0dd8761a981f7ac3cd8d71c3b724f3e0b8", + "url": "https://api.github.com/repos/livewire/livewire/zipball/ef04be759da41b14d2d129e670533180a44987dc", + "reference": "ef04be759da41b14d2d129e670533180a44987dc", "shasum": "" }, "require": { - "illuminate/database": "^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^7.0|^8.0|^9.0|^10.0", - "illuminate/validation": "^7.0|^8.0|^9.0|^10.0", + "illuminate/database": "^10.0|^11.0|^12.0", + "illuminate/routing": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "illuminate/validation": "^10.0|^11.0|^12.0", + "laravel/prompts": "^0.1.24|^0.2|^0.3", "league/mime-type-detection": "^1.9", - "php": "^7.2.5|^8.0", - "symfony/http-kernel": "^5.0|^6.0" + "php": "^8.1", + "symfony/console": "^6.0|^7.0", + "symfony/http-kernel": "^6.2|^7.0" }, "require-dev": { "calebporzio/sushi": "^2.1", - "laravel/framework": "^7.0|^8.0|^9.0|^10.0", + "laravel/framework": "^10.15.0|^11.0|^12.0", "mockery/mockery": "^1.3.1", - "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0", - "orchestra/testbench-dusk": "^5.2|^6.0|^7.0|^8.0", - "phpunit/phpunit": "^8.4|^9.0", - "psy/psysh": "@stable" + "orchestra/testbench": "^8.21.0|^9.0|^10.0", + "orchestra/testbench-dusk": "^8.24|^9.1|^10.0", + "phpunit/phpunit": "^10.4|^11.5", + "psy/psysh": "^0.11.22|^0.12" }, "type": "library", "extra": { @@ -4066,7 +4240,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v2.12.8" + "source": "https://github.com/livewire/livewire/tree/v3.6.4" }, "funding": [ { @@ -4074,7 +4248,7 @@ "type": "github" } ], - "time": "2024-07-13T19:58:46+00:00" + "time": "2025-07-17T05:12:15+00:00" }, { "name": "maatwebsite/excel", @@ -4159,31 +4333,32 @@ }, { "name": "maennchen/zipstream-php", - "version": "3.1.1", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "6187e9cc4493da94b9b63eb2315821552015fca9" + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/6187e9cc4493da94b9b63eb2315821552015fca9", - "reference": "6187e9cc4493da94b9b63eb2315821552015fca9", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f", "shasum": "" }, "require": { "ext-mbstring": "*", "ext-zlib": "*", - "php-64bit": "^8.1" + "php-64bit": "^8.2" }, "require-dev": { + "brianium/paratest": "^7.7", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^3.16", "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^10.0", - "vimeo/psalm": "^5.0" + "phpunit/phpunit": "^11.0", + "vimeo/psalm": "^6.0" }, "suggest": { "guzzlehttp/psr7": "^2.4", @@ -4224,7 +4399,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.1" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2" }, "funding": [ { @@ -4232,7 +4407,7 @@ "type": "github" } ], - "time": "2024-10-10T12:33:01+00:00" + "time": "2025-01-27T12:07:53+00:00" }, { "name": "markbaker/complex", @@ -4483,42 +4658,43 @@ }, { "name": "monolog/monolog", - "version": "2.10.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "5cf826f2991858b54d5c3809bee745560a1042a7" + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5cf826f2991858b54d5c3809bee745560a1042a7", - "reference": "5cf826f2991858b54d5c3809bee745560a1042a7", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", "shasum": "" }, "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + "psr/log-implementation": "3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "aws/aws-sdk-php": "^3.0", "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", - "guzzlehttp/guzzle": "^7.4", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpspec/prophecy": "^1.15", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^8.5.38 || ^9.6.19", - "predis/predis": "^1.1 || ^2.0", - "rollbar/rollbar": "^1.3 || ^2 || ^3", - "ruflin/elastica": "^7", - "swiftmailer/swiftmailer": "^5.3|^6.0", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -4541,7 +4717,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -4569,7 +4745,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.10.0" + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" }, "funding": [ { @@ -4581,7 +4757,7 @@ "type": "tidelift" } ], - "time": "2024-11-12T12:43:37+00:00" + "time": "2025-03-24T10:02:05+00:00" }, { "name": "nesbot/carbon", @@ -4984,34 +5160,124 @@ ], "time": "2024-11-21T10:36:35+00:00" }, + { + "name": "openspout/openspout", + "version": "v4.28.5", + "source": { + "type": "git", + "url": "https://github.com/openspout/openspout.git", + "reference": "ab05a09fe6fce57c90338f83280648a9786ce36b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/openspout/openspout/zipball/ab05a09fe6fce57c90338f83280648a9786ce36b", + "reference": "ab05a09fe6fce57c90338f83280648a9786ce36b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", + "ext-libxml": "*", + "ext-xmlreader": "*", + "ext-zip": "*", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "require-dev": { + "ext-zlib": "*", + "friendsofphp/php-cs-fixer": "^3.68.3", + "infection/infection": "^0.29.10", + "phpbench/phpbench": "^1.4.0", + "phpstan/phpstan": "^2.1.2", + "phpstan/phpstan-phpunit": "^2.0.4", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^11.5.4" + }, + "suggest": { + "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", + "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenSpout\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrien Loison", + "email": "adrien@box.com" + } + ], + "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", + "homepage": "https://github.com/openspout/openspout", + "keywords": [ + "OOXML", + "csv", + "excel", + "memory", + "odf", + "ods", + "office", + "open", + "php", + "read", + "scale", + "spreadsheet", + "stream", + "write", + "xlsx" + ], + "support": { + "issues": "https://github.com/openspout/openspout/issues", + "source": "https://github.com/openspout/openspout/tree/v4.28.5" + }, + "funding": [ + { + "url": "https://paypal.me/filippotessarotto", + "type": "custom" + }, + { + "url": "https://github.com/Slamdunk", + "type": "github" + } + ], + "time": "2025-01-30T13:51:11+00:00" + }, { "name": "owenvoke/blade-fontawesome", - "version": "v2.4.1", + "version": "v2.9.1", "source": { "type": "git", "url": "https://github.com/owenvoke/blade-fontawesome.git", - "reference": "6e378815c3e2e3cdc4bbbd1d6ac26940f95b9f8f" + "reference": "94dcd0c78f43f8234b0d9c76c903ecd288b8b0d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/owenvoke/blade-fontawesome/zipball/6e378815c3e2e3cdc4bbbd1d6ac26940f95b9f8f", - "reference": "6e378815c3e2e3cdc4bbbd1d6ac26940f95b9f8f", + "url": "https://api.github.com/repos/owenvoke/blade-fontawesome/zipball/94dcd0c78f43f8234b0d9c76c903ecd288b8b0d1", + "reference": "94dcd0c78f43f8234b0d9c76c903ecd288b8b0d1", "shasum": "" }, "require": { "blade-ui-kit/blade-icons": "^1.5", - "illuminate/support": "^9.0|^10.0", - "php": "^8.0", - "thecodingmachine/safe": "^2.4" + "illuminate/support": "^10.34|^11.0|^12.0", + "php": "^8.1" }, "require-dev": { - "laravel/pint": "^1.5", - "orchestra/testbench": "^7.0|^8.0", - "pestphp/pest": "^1.22.3", - "phpstan/phpstan": "^1.9.17", - "spatie/pest-plugin-snapshots": "^1.1", - "symfony/var-dumper": "^6.0", - "thecodingmachine/phpstan-safe-rule": "^1.2" + "laravel/pint": "^1.13", + "orchestra/testbench": "^8.12|^9.0|^10.0", + "pestphp/pest": "^2.26|^3.7", + "phpstan/phpstan": "^1.10|^2.1", + "symfony/var-dumper": "^6.3|^7.2" }, "type": "library", "extra": { @@ -5033,7 +5299,7 @@ "description": "A package to easily make use of Font Awesome in your Laravel Blade views", "support": { "issues": "https://github.com/owenvoke/blade-fontawesome/issues", - "source": "https://github.com/owenvoke/blade-fontawesome/tree/v2.4.1" + "source": "https://github.com/owenvoke/blade-fontawesome/tree/v2.9.1" }, "funding": [ { @@ -5045,28 +5311,30 @@ "type": "github" } ], - "time": "2023-08-15T10:12:32+00:00" + "time": "2025-03-28T16:03:42+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v3.0.0", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", "shasum": "" }, "require": { "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^9", - "vimeo/psalm": "^4|^5" + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, "type": "library", "autoload": { @@ -5112,7 +5380,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2024-05-08T12:36:18+00:00" + "time": "2025-09-24T15:06:41+00:00" }, { "name": "paragonie/random_compat", @@ -5166,16 +5434,16 @@ }, { "name": "paragonie/sodium_compat", - "version": "v2.1.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "a673d5f310477027cead2e2f2b6db5d8368157cb" + "reference": "547e2dc4d45107440e76c17ab5a46e4252460158" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/a673d5f310477027cead2e2f2b6db5d8368157cb", - "reference": "a673d5f310477027cead2e2f2b6db5d8368157cb", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/547e2dc4d45107440e76c17ab5a46e4252460158", + "reference": "547e2dc4d45107440e76c17ab5a46e4252460158", "shasum": "" }, "require": { @@ -5183,8 +5451,10 @@ "php-64bit": "*" }, "require-dev": { - "phpunit/phpunit": "^7|^8|^9", - "vimeo/psalm": "^4|^5" + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^7|^8|^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, "suggest": { "ext-sodium": "Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." @@ -5198,7 +5468,10 @@ "autoload": { "files": [ "autoload.php" - ] + ], + "psr-4": { + "ParagonIE\\Sodium\\": "namespaced/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5251,9 +5524,9 @@ ], "support": { "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v2.1.0" + "source": "https://github.com/paragonie/sodium_compat/tree/v2.4.0" }, - "time": "2024-09-04T12:51:01+00:00" + "time": "2025-10-06T08:47:40+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -5549,16 +5822,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.46", + "version": "3.0.47", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6" + "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", - "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/9d6ca36a6c2dd434765b1071b2644a1c683b385d", + "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d", "shasum": "" }, "require": { @@ -5639,7 +5912,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.46" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.47" }, "funding": [ { @@ -5655,20 +5928,20 @@ "type": "tidelift" } ], - "time": "2025-06-26T16:29:55+00:00" + "time": "2025-10-06T01:07:24+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "2.2.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8" + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8", - "reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", "shasum": "" }, "require": { @@ -5700,84 +5973,31 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.2.0" - }, - "time": "2025-07-13T07:04:09+00:00" - }, - { - "name": "pragmarx/google2fa", - "version": "v8.0.3", - "source": { - "type": "git", - "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", - "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", - "shasum": "" - }, - "require": { - "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0", - "php": "^7.1|^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^7.5.15|^8.5|^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "PragmaRX\\Google2FA\\": "src/" - } + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Antonio Carlos Ribeiro", - "email": "acr@antoniocarlosribeiro.com", - "role": "Creator & Designer" - } - ], - "description": "A One Time Password Authentication package, compatible with Google Authenticator.", - "keywords": [ - "2fa", - "Authentication", - "Two Factor Authentication", - "google2fa" - ], - "support": { - "issues": "https://github.com/antonioribeiro/google2fa/issues", - "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.3" - }, - "time": "2024-09-05T11:56:40+00:00" + "time": "2025-08-30T15:50:23+00:00" }, { "name": "protonemedia/laravel-verify-new-email", - "version": "v1.8.0", + "version": "v1.13.0", "source": { "type": "git", "url": "https://github.com/protonemedia/laravel-verify-new-email.git", - "reference": "faa03bb94bb6fc1bf34765c6e207af24612dfd8a" + "reference": "530db50934fe8c7771483af2dcfbbf9b764b23fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/protonemedia/laravel-verify-new-email/zipball/faa03bb94bb6fc1bf34765c6e207af24612dfd8a", - "reference": "faa03bb94bb6fc1bf34765c6e207af24612dfd8a", + "url": "https://api.github.com/repos/protonemedia/laravel-verify-new-email/zipball/530db50934fe8c7771483af2dcfbbf9b764b23fc", + "reference": "530db50934fe8c7771483af2dcfbbf9b764b23fc", "shasum": "" }, "require": { - "illuminate/support": "^9.0|^10.0", - "php": "^8.1|^8.2" + "illuminate/support": "^10.0|^11.0|^12.0", + "php": "^8.2|^8.3|^8.4" }, "require-dev": { - "nesbot/carbon": "^2.66", - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.5.10" + "orchestra/testbench": "^8.0|^9.0|^10.0", + "phpunit/phpunit": "^10.4|^11.5.3" }, "type": "library", "extra": { @@ -5811,7 +6031,7 @@ ], "support": { "issues": "https://github.com/protonemedia/laravel-verify-new-email/issues", - "source": "https://github.com/protonemedia/laravel-verify-new-email/tree/v1.8.0" + "source": "https://github.com/protonemedia/laravel-verify-new-email/tree/v1.13.0" }, "funding": [ { @@ -5819,7 +6039,7 @@ "type": "github" } ], - "time": "2023-02-21T21:35:39+00:00" + "time": "2025-04-01T19:31:34+00:00" }, { "name": "psr/cache", @@ -6284,16 +6504,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.10", + "version": "v0.12.12", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22" + "reference": "cd23863404a40ccfaf733e3af4db2b459837f7e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/6e80abe6f2257121f1eb9a4c55bf29d921025b22", - "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/cd23863404a40ccfaf733e3af4db2b459837f7e7", + "reference": "cd23863404a40ccfaf733e3af4db2b459837f7e7", "shasum": "" }, "require": { @@ -6356,9 +6576,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.10" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.12" }, - "time": "2025-08-04T12:39:37+00:00" + "time": "2025-09-20T13:46:31+00:00" }, { "name": "pusher/pusher-php-server", @@ -6543,20 +6763,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.0", + "version": "4.9.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" + "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", - "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440", + "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -6615,39 +6835,39 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.0" + "source": "https://github.com/ramsey/uuid/tree/4.9.1" }, - "time": "2025-06-25T14:20:11+00:00" + "time": "2025-09-04T20:59:21+00:00" }, { "name": "ryangjchandler/blade-capture-directive", - "version": "v0.3.0", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/ryangjchandler/blade-capture-directive.git", - "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89" + "reference": "bbb1513dfd89eaec87a47fe0c449a7e3d4a1976d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/62fd2ecb50b938a46025093bcb64fcaddd531f89", - "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89", + "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/bbb1513dfd89eaec87a47fe0c449a7e3d4a1976d", + "reference": "bbb1513dfd89eaec87a47fe0c449a7e3d4a1976d", "shasum": "" }, "require": { - "illuminate/contracts": "^9.0|^10.0", - "php": "^8.0", + "illuminate/contracts": "^10.0|^11.0|^12.0", + "php": "^8.1", "spatie/laravel-package-tools": "^1.9.2" }, "require-dev": { - "nunomaduro/collision": "^6.0|^7.0", - "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.22|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", + "nunomaduro/collision": "^7.0|^8.0", + "nunomaduro/larastan": "^2.0|^3.0", + "orchestra/testbench": "^8.0|^9.0|^10.0", + "pestphp/pest": "^2.0|^3.7", + "pestphp/pest-plugin-laravel": "^2.0|^3.1", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", + "phpstan/phpstan-phpunit": "^1.0|^2.0", + "phpunit/phpunit": "^10.0|^11.5.3", "spatie/laravel-ray": "^1.26" }, "type": "library", @@ -6678,54 +6898,117 @@ "role": "Developer" } ], - "description": "Create inline partials in your Blade templates with ease.", - "homepage": "https://github.com/ryangjchandler/blade-capture-directive", + "description": "Create inline partials in your Blade templates with ease.", + "homepage": "https://github.com/ryangjchandler/blade-capture-directive", + "keywords": [ + "blade-capture-directive", + "laravel", + "ryangjchandler" + ], + "support": { + "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues", + "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v1.1.0" + }, + "funding": [ + { + "url": "https://github.com/ryangjchandler", + "type": "github" + } + ], + "time": "2025-02-25T09:09:36+00:00" + }, + { + "name": "spatie/color", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/color.git", + "reference": "142af7fec069a420babea80a5412eb2f646dcd8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/color/zipball/142af7fec069a420babea80a5412eb2f646dcd8c", + "reference": "142af7fec069a420babea80a5412eb2f646dcd8c", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^6.5||^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Color\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sebastian De Deyne", + "email": "sebastian@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A little library to handle color conversions", + "homepage": "https://github.com/spatie/color", "keywords": [ - "blade-capture-directive", - "laravel", - "ryangjchandler" + "color", + "conversion", + "rgb", + "spatie" ], "support": { - "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues", - "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v0.3.0" + "issues": "https://github.com/spatie/color/issues", + "source": "https://github.com/spatie/color/tree/1.8.0" }, "funding": [ { - "url": "https://github.com/ryangjchandler", + "url": "https://github.com/spatie", "type": "github" } ], - "time": "2023-02-14T16:54:54+00:00" + "time": "2025-02-10T09:22:41+00:00" }, { "name": "spatie/image", - "version": "2.2.7", + "version": "3.8.6", "source": { "type": "git", "url": "https://github.com/spatie/image.git", - "reference": "2f802853aab017aa615224daae1588054b5ab20e" + "reference": "0872c5968a7f044fe1e960c26433e54ceaede696" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image/zipball/2f802853aab017aa615224daae1588054b5ab20e", - "reference": "2f802853aab017aa615224daae1588054b5ab20e", + "url": "https://api.github.com/repos/spatie/image/zipball/0872c5968a7f044fe1e960c26433e54ceaede696", + "reference": "0872c5968a7f044fe1e960c26433e54ceaede696", "shasum": "" }, "require": { "ext-exif": "*", "ext-json": "*", "ext-mbstring": "*", - "league/glide": "^2.2.2", - "php": "^8.0", - "spatie/image-optimizer": "^1.7", - "spatie/temporary-directory": "^1.0|^2.0", - "symfony/process": "^3.0|^4.0|^5.0|^6.0" + "php": "^8.2", + "spatie/image-optimizer": "^1.7.5", + "spatie/temporary-directory": "^2.2", + "symfony/process": "^6.4|^7.0" }, "require-dev": { - "pestphp/pest": "^1.22", - "phpunit/phpunit": "^9.5", - "symfony/var-dumper": "^4.0|^5.0|^6.0", - "vimeo/psalm": "^4.6" + "ext-gd": "*", + "ext-imagick": "*", + "laravel/sail": "^1.34", + "pestphp/pest": "^2.28", + "phpstan/phpstan": "^1.10.50", + "spatie/pest-plugin-snapshots": "^2.1", + "spatie/pixelmatch-php": "^1.0", + "spatie/ray": "^1.40.1", + "symfony/var-dumper": "^6.4|7.0" }, "type": "library", "autoload": { @@ -6752,7 +7035,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/image/tree/2.2.7" + "source": "https://github.com/spatie/image/tree/3.8.6" }, "funding": [ { @@ -6764,7 +7047,7 @@ "type": "github" } ], - "time": "2023-07-24T13:54:13+00:00" + "time": "2025-09-25T12:06:17+00:00" }, { "name": "spatie/image-optimizer", @@ -6823,16 +7106,16 @@ }, { "name": "spatie/invade", - "version": "1.1.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/spatie/invade.git", - "reference": "d0a9c895a96152549d478a7e3420e19039eef038" + "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/invade/zipball/d0a9c895a96152549d478a7e3420e19039eef038", - "reference": "d0a9c895a96152549d478a7e3420e19039eef038", + "url": "https://api.github.com/repos/spatie/invade/zipball/b920f6411d21df4e8610a138e2e87ae4957d7f63", + "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63", "shasum": "" }, "require": { @@ -6844,13 +7127,6 @@ "spatie/ray": "^1.28" }, "type": "library", - "extra": { - "phpstan": { - "includes": [ - "phpstan-extension.neon" - ] - } - }, "autoload": { "files": [ "src/functions.php" @@ -6877,7 +7153,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/invade/tree/1.1.1" + "source": "https://github.com/spatie/invade/tree/2.1.0" }, "funding": [ { @@ -6885,7 +7161,7 @@ "type": "github" } ], - "time": "2022-07-05T09:31:00+00:00" + "time": "2024-05-17T09:06:10+00:00" }, { "name": "spatie/laravel-activitylog", @@ -6980,53 +7256,55 @@ }, { "name": "spatie/laravel-medialibrary", - "version": "10.15.0", + "version": "11.15.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-medialibrary.git", - "reference": "f464c82357500c5c68ea350edff35ed9831fd48e" + "reference": "9d1e9731d36817d1649bc584b2c40c0c9d4bcfac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/f464c82357500c5c68ea350edff35ed9831fd48e", - "reference": "f464c82357500c5c68ea350edff35ed9831fd48e", + "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/9d1e9731d36817d1649bc584b2c40c0c9d4bcfac", + "reference": "9d1e9731d36817d1649bc584b2c40c0c9d4bcfac", "shasum": "" }, "require": { + "composer/semver": "^3.4", "ext-exif": "*", "ext-fileinfo": "*", "ext-json": "*", - "illuminate/bus": "^9.18|^10.0", - "illuminate/conditionable": "^9.18|^10.0", - "illuminate/console": "^9.18|^10.0", - "illuminate/database": "^9.18|^10.0", - "illuminate/pipeline": "^9.18|^10.0", - "illuminate/support": "^9.18|^10.0", - "maennchen/zipstream-php": "^2.0|^3.0", - "php": "^8.0", - "spatie/image": "^2.2.7", - "spatie/temporary-directory": "^2.0", - "symfony/console": "^6.0" + "illuminate/bus": "^10.2|^11.0|^12.0", + "illuminate/conditionable": "^10.2|^11.0|^12.0", + "illuminate/console": "^10.2|^11.0|^12.0", + "illuminate/database": "^10.2|^11.0|^12.0", + "illuminate/pipeline": "^10.2|^11.0|^12.0", + "illuminate/support": "^10.2|^11.0|^12.0", + "maennchen/zipstream-php": "^3.1", + "php": "^8.2", + "spatie/image": "^3.3.2", + "spatie/laravel-package-tools": "^1.16.1", + "spatie/temporary-directory": "^2.2", + "symfony/console": "^6.4.1|^7.0" }, "conflict": { "php-ffmpeg/php-ffmpeg": "<0.6.1" }, "require-dev": { - "aws/aws-sdk-php": "^3.133.11", - "doctrine/dbal": "^2.13", + "aws/aws-sdk-php": "^3.293.10", "ext-imagick": "*", "ext-pdo_sqlite": "*", "ext-zip": "*", - "guzzlehttp/guzzle": "^7.4", - "league/flysystem-aws-s3-v3": "^3.0", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.0|^8.0", - "pestphp/pest": "^1.21", - "phpstan/extension-installer": "^1.1", - "spatie/laravel-ray": "^1.28", - "spatie/pdf-to-image": "^2.1", - "spatie/phpunit-snapshot-assertions": "^4.2" + "guzzlehttp/guzzle": "^7.8.1", + "larastan/larastan": "^2.7|^3.0", + "league/flysystem-aws-s3-v3": "^3.22", + "mockery/mockery": "^1.6.7", + "orchestra/testbench": "^7.0|^8.17|^9.0|^10.0", + "pestphp/pest": "^2.28|^3.5", + "phpstan/extension-installer": "^1.3.1", + "spatie/laravel-ray": "^1.33", + "spatie/pdf-to-image": "^2.2|^3.0", + "spatie/pest-expectations": "^1.13", + "spatie/pest-plugin-snapshots": "^2.1" }, "suggest": { "league/flysystem-aws-s3-v3": "Required to use AWS S3 file storage", @@ -7072,7 +7350,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-medialibrary/issues", - "source": "https://github.com/spatie/laravel-medialibrary/tree/10.15.0" + "source": "https://github.com/spatie/laravel-medialibrary/tree/11.15.0" }, "funding": [ { @@ -7084,7 +7362,7 @@ "type": "github" } ], - "time": "2023-11-03T13:09:19+00:00" + "time": "2025-09-19T06:51:45+00:00" }, { "name": "spatie/laravel-package-tools", @@ -7459,16 +7737,16 @@ }, { "name": "symfony/console", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", + "url": "https://api.github.com/repos/symfony/console/zipball/492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", "shasum": "" }, "require": { @@ -7533,7 +7811,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.25" + "source": "https://github.com/symfony/console/tree/v6.4.26" }, "funding": [ { @@ -7553,24 +7831,24 @@ "type": "tidelift" } ], - "time": "2025-08-22T10:21:53+00:00" + "time": "2025-09-26T12:13:46+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.24", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "9b784413143701aa3c94ac1869a159a9e53e8761" + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/9b784413143701aa3c94ac1869a159a9e53e8761", - "reference": "9b784413143701aa3c94ac1869a159a9e53e8761", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -7602,7 +7880,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.24" + "source": "https://github.com/symfony/css-selector/tree/v7.3.0" }, "funding": [ { @@ -7613,16 +7891,12 @@ "url": "https://github.com/fabpot", "type": "github" }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/deprecation-contracts", @@ -7693,16 +7967,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c" + "reference": "41bedcaec5b72640b0ec2096547b75fda72ead6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/30fd0b3cf0e972e82636038ce4db0e4fe777112c", - "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/41bedcaec5b72640b0ec2096547b75fda72ead6c", + "reference": "41bedcaec5b72640b0ec2096547b75fda72ead6c", "shasum": "" }, "require": { @@ -7748,7 +8022,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.24" + "source": "https://github.com/symfony/error-handler/tree/v6.4.26" }, "funding": [ { @@ -7768,28 +8042,28 @@ "type": "tidelift" } ], - "time": "2025-07-24T08:25:04+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.25", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b0cf3162020603587363f0551cd3be43958611ff" + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff", - "reference": "b0cf3162020603587363f0551cd3be43958611ff", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -7798,13 +8072,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0|^7.0" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7832,7 +8106,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" }, "funding": [ { @@ -7852,7 +8126,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-08-13T11:49:31+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -7998,18 +8272,91 @@ ], "time": "2025-07-15T12:02:45+00:00" }, + { + "name": "symfony/html-sanitizer", + "version": "v7.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/html-sanitizer.git", + "reference": "8740fc48979f649dee8b8fc51a2698e5c190bf12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/8740fc48979f649dee8b8fc51a2698e5c190bf12", + "reference": "8740fc48979f649dee8b8fc51a2698e5c190bf12", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "league/uri": "^6.5|^7.0", + "masterminds/html5": "^2.7.2", + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HtmlSanitizer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.", + "homepage": "https://symfony.com", + "keywords": [ + "Purifier", + "html", + "sanitizer" + ], + "support": { + "source": "https://github.com/symfony/html-sanitizer/tree/v7.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-08-12T10:34:03+00:00" + }, { "name": "symfony/http-foundation", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "6bc974c0035b643aa497c58d46d9e25185e4b272" + "reference": "369241591d92bb5dfb4c6ccd6ee94378a45b1521" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6bc974c0035b643aa497c58d46d9e25185e4b272", - "reference": "6bc974c0035b643aa497c58d46d9e25185e4b272", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/369241591d92bb5dfb4c6ccd6ee94378a45b1521", + "reference": "369241591d92bb5dfb4c6ccd6ee94378a45b1521", "shasum": "" }, "require": { @@ -8057,7 +8404,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.25" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.26" }, "funding": [ { @@ -8077,20 +8424,20 @@ "type": "tidelift" } ], - "time": "2025-08-20T06:48:20+00:00" + "time": "2025-09-16T08:22:30+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15" + "reference": "8b0f963293aede77593c9845c8c0af34752e893a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15", - "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8b0f963293aede77593c9845c8c0af34752e893a", + "reference": "8b0f963293aede77593c9845c8c0af34752e893a", "shasum": "" }, "require": { @@ -8175,7 +8522,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.25" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.26" }, "funding": [ { @@ -8195,20 +8542,20 @@ "type": "tidelift" } ], - "time": "2025-08-29T07:55:45+00:00" + "time": "2025-09-27T12:20:56+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2" + "reference": "012185cd31689b799d39505bd706be6d3a57cd3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/628b43b45a3e6b15c8a633fb22df547ed9b492a2", - "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2", + "url": "https://api.github.com/repos/symfony/mailer/zipball/012185cd31689b799d39505bd706be6d3a57cd3f", + "reference": "012185cd31689b799d39505bd706be6d3a57cd3f", "shasum": "" }, "require": { @@ -8259,7 +8606,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.25" + "source": "https://github.com/symfony/mailer/tree/v6.4.26" }, "funding": [ { @@ -8279,20 +8626,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/mime", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7" + "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/664d5e844a2de5e11c8255d0aef6bc15a9660ac7", - "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7", + "url": "https://api.github.com/repos/symfony/mime/zipball/61ab9681cdfe315071eb4fa79b6ad6ab030a9235", + "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235", "shasum": "" }, "require": { @@ -8348,7 +8695,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.24" + "source": "https://github.com/symfony/mime/tree/v6.4.26" }, "funding": [ { @@ -8368,7 +8715,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T12:02:45+00:00" + "time": "2025-09-16T08:22:30+00:00" }, { "name": "symfony/polyfill-ctype", @@ -9041,16 +9388,16 @@ }, { "name": "symfony/process", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8" + "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", - "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", + "url": "https://api.github.com/repos/symfony/process/zipball/48bad913268c8cafabbf7034b39c8bb24fbc5ab8", + "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8", "shasum": "" }, "require": { @@ -9082,7 +9429,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.25" + "source": "https://github.com/symfony/process/tree/v6.4.26" }, "funding": [ { @@ -9102,20 +9449,20 @@ "type": "tidelift" } ], - "time": "2025-08-14T06:23:17+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/routing", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5" + "reference": "6fc4c445f22857d4b8b40a02b73f423ddab295de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e4f94e625c8e6f910aa004a0042f7b2d398278f5", - "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5", + "url": "https://api.github.com/repos/symfony/routing/zipball/6fc4c445f22857d4b8b40a02b73f423ddab295de", + "reference": "6fc4c445f22857d4b8b40a02b73f423ddab295de", "shasum": "" }, "require": { @@ -9169,7 +9516,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.24" + "source": "https://github.com/symfony/routing/tree/v6.4.26" }, "funding": [ { @@ -9189,7 +9536,7 @@ "type": "tidelift" } ], - "time": "2025-07-15T08:46:37+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/service-contracts", @@ -9276,20 +9623,20 @@ }, { "name": "symfony/string", - "version": "v6.4.25", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" + "reference": "f96476035142921000338bad71e5247fbc138872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -9299,11 +9646,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", + "symfony/emoji": "^7.1", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -9342,7 +9689,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.25" + "source": "https://github.com/symfony/string/tree/v7.3.4" }, "funding": [ { @@ -9362,20 +9709,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T12:33:20+00:00" + "time": "2025-09-11T14:36:48+00:00" }, { "name": "symfony/translation", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1" + "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/300b72643e89de0734d99a9e3f8494a3ef6936e1", - "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1", + "url": "https://api.github.com/repos/symfony/translation/zipball/c8559fe25c7ee7aa9d28f228903a46db008156a4", + "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4", "shasum": "" }, "require": { @@ -9441,7 +9788,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.24" + "source": "https://github.com/symfony/translation/tree/v6.4.26" }, "funding": [ { @@ -9461,7 +9808,7 @@ "type": "tidelift" } ], - "time": "2025-07-30T17:30:48+00:00" + "time": "2025-09-05T18:17:25+00:00" }, { "name": "symfony/translation-contracts", @@ -9621,16 +9968,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c6cd92486e9fc32506370822c57bc02353a5a92c" + "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6cd92486e9fc32506370822c57bc02353a5a92c", - "reference": "c6cd92486e9fc32506370822c57bc02353a5a92c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cfae1497a2f1eaad78dbc0590311c599c7178d4a", + "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a", "shasum": "" }, "require": { @@ -9685,7 +10032,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.25" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.26" }, "funding": [ { @@ -9705,195 +10052,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" - }, - { - "name": "tgalopin/html-sanitizer", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/tgalopin/html-sanitizer.git", - "reference": "5d02dcb6f2ea4f505731eac440798caa1b3b0913" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tgalopin/html-sanitizer/zipball/5d02dcb6f2ea4f505731eac440798caa1b3b0913", - "reference": "5d02dcb6f2ea4f505731eac440798caa1b3b0913", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "league/uri-parser": "^1.4.1", - "masterminds/html5": "^2.4", - "php": ">=7.1", - "psr/log": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.4", - "symfony/var-dumper": "^4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "HtmlSanitizer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Titouan Galopin", - "email": "galopintitouan@gmail.com" - } - ], - "description": "Sanitize untrustworthy HTML user input", - "support": { - "issues": "https://github.com/tgalopin/html-sanitizer/issues", - "source": "https://github.com/tgalopin/html-sanitizer/tree/1.5.0" - }, - "abandoned": "symfony/html-sanitizer", - "time": "2021-09-14T08:27:50+00:00" - }, - { - "name": "thecodingmachine/safe", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/thecodingmachine/safe.git", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "files": [ - "deprecated/apc.php", - "deprecated/array.php", - "deprecated/datetime.php", - "deprecated/libevent.php", - "deprecated/misc.php", - "deprecated/password.php", - "deprecated/mssql.php", - "deprecated/stats.php", - "deprecated/strings.php", - "lib/special_cases.php", - "deprecated/mysqli.php", - "generated/apache.php", - "generated/apcu.php", - "generated/array.php", - "generated/bzip2.php", - "generated/calendar.php", - "generated/classobj.php", - "generated/com.php", - "generated/cubrid.php", - "generated/curl.php", - "generated/datetime.php", - "generated/dir.php", - "generated/eio.php", - "generated/errorfunc.php", - "generated/exec.php", - "generated/fileinfo.php", - "generated/filesystem.php", - "generated/filter.php", - "generated/fpm.php", - "generated/ftp.php", - "generated/funchand.php", - "generated/gettext.php", - "generated/gmp.php", - "generated/gnupg.php", - "generated/hash.php", - "generated/ibase.php", - "generated/ibmDb2.php", - "generated/iconv.php", - "generated/image.php", - "generated/imap.php", - "generated/info.php", - "generated/inotify.php", - "generated/json.php", - "generated/ldap.php", - "generated/libxml.php", - "generated/lzf.php", - "generated/mailparse.php", - "generated/mbstring.php", - "generated/misc.php", - "generated/mysql.php", - "generated/network.php", - "generated/oci8.php", - "generated/opcache.php", - "generated/openssl.php", - "generated/outcontrol.php", - "generated/pcntl.php", - "generated/pcre.php", - "generated/pgsql.php", - "generated/posix.php", - "generated/ps.php", - "generated/pspell.php", - "generated/readline.php", - "generated/rpminfo.php", - "generated/rrd.php", - "generated/sem.php", - "generated/session.php", - "generated/shmop.php", - "generated/sockets.php", - "generated/sodium.php", - "generated/solr.php", - "generated/spl.php", - "generated/sqlsrv.php", - "generated/ssdeep.php", - "generated/ssh2.php", - "generated/stream.php", - "generated/strings.php", - "generated/swoole.php", - "generated/uodbc.php", - "generated/uopz.php", - "generated/url.php", - "generated/var.php", - "generated/xdiff.php", - "generated/xml.php", - "generated/xmlrpc.php", - "generated/yaml.php", - "generated/yaz.php", - "generated/zip.php", - "generated/zlib.php" - ], - "classmap": [ - "lib/DateTime.php", - "lib/DateTimeImmutable.php", - "lib/Exceptions/", - "deprecated/Exceptions/", - "generated/Exceptions/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHP core functions that throw exceptions instead of returning FALSE on error", - "support": { - "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" - }, - "time": "2023-04-05T11:54:14+00:00" + "time": "2025-09-25T15:37:27+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -10425,16 +10584,16 @@ }, { "name": "kkomelin/laravel-translatable-string-exporter", - "version": "1.23.0", + "version": "1.25.0", "source": { "type": "git", "url": "https://github.com/kkomelin/laravel-translatable-string-exporter.git", - "reference": "5d310214ac647904953b4a830f3990a04e262f06" + "reference": "e0feda8878a8b2a3dd5f4f66f14e5d808421346e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kkomelin/laravel-translatable-string-exporter/zipball/5d310214ac647904953b4a830f3990a04e262f06", - "reference": "5d310214ac647904953b4a830f3990a04e262f06", + "url": "https://api.github.com/repos/kkomelin/laravel-translatable-string-exporter/zipball/e0feda8878a8b2a3dd5f4f66f14e5d808421346e", + "reference": "e0feda8878a8b2a3dd5f4f66f14e5d808421346e", "shasum": "" }, "require": { @@ -10445,7 +10604,7 @@ "symfony/finder": "^5|^6|^7.0" }, "require-dev": { - "nunomaduro/larastan": "^1.0|^2.0|^3.0", + "larastan/larastan": "^1.0|^2.0|^3.0", "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", "phpunit/phpunit": "^9.0|^10.5|^11.5|^12.0" }, @@ -10484,22 +10643,22 @@ ], "support": { "issues": "https://github.com/kkomelin/laravel-translatable-string-exporter/issues", - "source": "https://github.com/kkomelin/laravel-translatable-string-exporter/tree/1.23.0" + "source": "https://github.com/kkomelin/laravel-translatable-string-exporter/tree/1.25.0" }, - "time": "2025-02-26T12:03:29+00:00" + "time": "2025-10-03T09:34:30+00:00" }, { "name": "laravel/pint", - "version": "v1.20.0", + "version": "v1.25.1", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "53072e8ea22213a7ed168a8a15b96fbb8b82d44b" + "reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/53072e8ea22213a7ed168a8a15b96fbb8b82d44b", - "reference": "53072e8ea22213a7ed168a8a15b96fbb8b82d44b", + "url": "https://api.github.com/repos/laravel/pint/zipball/5016e263f95d97670d71b9a987bd8996ade6d8d9", + "reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9", "shasum": "" }, "require": { @@ -10507,15 +10666,15 @@ "ext-mbstring": "*", "ext-tokenizer": "*", "ext-xml": "*", - "php": "^8.1.0" + "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.66.0", - "illuminate/view": "^10.48.25", - "larastan/larastan": "^2.9.12", - "laravel-zero/framework": "^10.48.25", + "friendsofphp/php-cs-fixer": "^3.87.2", + "illuminate/view": "^11.46.0", + "larastan/larastan": "^3.7.1", + "laravel-zero/framework": "^11.45.0", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^1.17.0", + "nunomaduro/termwind": "^2.3.1", "pestphp/pest": "^2.36.0" }, "bin": [ @@ -10552,20 +10711,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2025-01-14T16:20:53+00:00" + "time": "2025-09-19T02:57:12+00:00" }, { "name": "laravel/sail", - "version": "v1.45.0", + "version": "v1.46.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "019a2933ff4a9199f098d4259713f9bc266a874e" + "reference": "eb90c4f113c4a9637b8fdd16e24cfc64f2b0ae6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/019a2933ff4a9199f098d4259713f9bc266a874e", - "reference": "019a2933ff4a9199f098d4259713f9bc266a874e", + "url": "https://api.github.com/repos/laravel/sail/zipball/eb90c4f113c4a9637b8fdd16e24cfc64f2b0ae6e", + "reference": "eb90c4f113c4a9637b8fdd16e24cfc64f2b0ae6e", "shasum": "" }, "require": { @@ -10615,7 +10774,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2025-08-25T19:28:31+00:00" + "time": "2025-09-23T13:44:39+00:00" }, { "name": "mockery/mockery", @@ -11287,16 +11446,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.25", + "version": "9.6.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "049c011e01be805202d8eebedef49f769a8ec7b7" + "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/049c011e01be805202d8eebedef49f769a8ec7b7", - "reference": "049c011e01be805202d8eebedef49f769a8ec7b7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", + "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", "shasum": "" }, "require": { @@ -11321,7 +11480,7 @@ "sebastian/comparator": "^4.0.9", "sebastian/diff": "^4.0.6", "sebastian/environment": "^5.1.5", - "sebastian/exporter": "^4.0.6", + "sebastian/exporter": "^4.0.8", "sebastian/global-state": "^5.0.8", "sebastian/object-enumerator": "^4.0.4", "sebastian/resource-operations": "^3.0.4", @@ -11370,7 +11529,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.25" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.29" }, "funding": [ { @@ -11394,7 +11553,7 @@ "type": "tidelift" } ], - "time": "2025-08-20T14:38:31+00:00" + "time": "2025-09-24T06:29:11+00:00" }, { "name": "sebastian/cli-parser", @@ -11837,16 +11996,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/14c6ba52f95a36c3d27c835d65efc7123c446e8c", + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c", "shasum": "" }, "require": { @@ -11902,15 +12061,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2025-09-24T06:03:27+00:00" }, { "name": "sebastian/global-state", @@ -12459,6 +12630,80 @@ ], "time": "2025-08-26T08:22:30+00:00" }, + { + "name": "spatie/error-solutions", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/error-solutions.git", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0|^12.0", + "illuminate/cache": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "livewire/livewire": "^2.11|^3.5.20", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "phpstan/phpstan": "^2.1", + "psr/simple-cache": "^3.0", + "psr/simple-cache-implementation": "^3.0", + "spatie/ray": "^1.28", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "legacy/ignition", + "Spatie\\ErrorSolutions\\": "src", + "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" + } + ], + "description": "This is my package error-solutions", + "homepage": "https://github.com/spatie/error-solutions", + "keywords": [ + "error-solutions", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/error-solutions/issues", + "source": "https://github.com/spatie/error-solutions/tree/1.1.3" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2025-02-14T12:29:50+00:00" + }, { "name": "spatie/flare-client-php", "version": "1.10.1", @@ -12530,29 +12775,29 @@ }, { "name": "spatie/ignition", - "version": "1.14.2", + "version": "1.15.1", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "5e11c11f675bb5251f061491a493e04a1a571532" + "reference": "31f314153020aee5af3537e507fef892ffbf8c85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/5e11c11f675bb5251f061491a493e04a1a571532", - "reference": "5e11c11f675bb5251f061491a493e04a1a571532", + "url": "https://api.github.com/repos/spatie/ignition/zipball/31f314153020aee5af3537e507fef892ffbf8c85", + "reference": "31f314153020aee5af3537e507fef892ffbf8c85", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", - "spatie/backtrace": "^1.5.3", - "spatie/flare-client-php": "^1.4.0", + "spatie/error-solutions": "^1.0", + "spatie/flare-client-php": "^1.7", "symfony/console": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "require-dev": { - "illuminate/cache": "^9.52|^10.0|^11.0", + "illuminate/cache": "^9.52|^10.0|^11.0|^12.0", "mockery/mockery": "^1.4", "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", @@ -12609,45 +12854,46 @@ "type": "github" } ], - "time": "2024-05-29T08:10:20+00:00" + "time": "2025-02-21T14:31:39+00:00" }, { "name": "spatie/laravel-ignition", - "version": "1.7.0", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb" + "reference": "1baee07216d6748ebd3a65ba97381b051838707a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb", - "reference": "b6d5c33cf0b8260d6540572af2d9bcf9182fe5fb", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1baee07216d6748ebd3a65ba97381b051838707a", + "reference": "1baee07216d6748ebd3a65ba97381b051838707a", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.27", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "<= 1.14.2", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" + "illuminate/support": "^10.0|^11.0|^12.0", + "php": "^8.1", + "spatie/ignition": "^1.15", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" }, "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1|^0.10", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.34|^3.7", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan-deprecation-rules": "^1.1.1|^2.0", + "phpstan/phpstan-phpunit": "^1.3.16|^2.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" }, "type": "library", "extra": { @@ -12699,32 +12945,32 @@ "type": "github" } ], - "time": "2024-06-13T07:21:06+00:00" + "time": "2025-02-20T13:13:55+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.25", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565" + "reference": "d4f4a66866fe2451f61296924767280ab5732d9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565", - "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d", + "reference": "d4f4a66866fe2451f61296924767280ab5732d9d", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -12755,7 +13001,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.25" + "source": "https://github.com/symfony/yaml/tree/v7.3.3" }, "funding": [ { @@ -12775,7 +13021,7 @@ "type": "tidelift" } ], - "time": "2025-08-26T16:59:00+00:00" + "time": "2025-08-27T11:34:33+00:00" }, { "name": "theseer/tokenizer", @@ -12830,13 +13076,13 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { "php": "^8.0.2", "ext-iconv": "*" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } diff --git a/config/app.php b/config/app.php index 3d44961b..21757978 100644 --- a/config/app.php +++ b/config/app.php @@ -92,7 +92,8 @@ | */ - 'locale' => 'en', + 'locale' => 'id', + 'fallback_locale' => 'en', /* |-------------------------------------------------------------------------- @@ -203,6 +204,7 @@ App\Providers\AuthServiceProvider::class, App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, + App\Providers\Filament\AdminPanelProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\HtmlConverterServiceProvider::class, diff --git a/config/filament.php b/config/filament.php index 97cfa0d4..cd68621e 100644 --- a/config/filament.php +++ b/config/filament.php @@ -1,336 +1,168 @@ env('FILAMENT_PATH', ''), - - /* - |-------------------------------------------------------------------------- - | Filament Core Path - |-------------------------------------------------------------------------- - | - | This is the path which Filament will use to load its core routes and assets. - | You may change it if it conflicts with your other routes. - | - */ - - 'core_path' => env('FILAMENT_CORE_PATH', 'filament'), - - /* - |-------------------------------------------------------------------------- - | Filament Domain - |-------------------------------------------------------------------------- - | - | You may change the domain where Filament should be active. If the domain - | is empty, all domains will be valid. - | - */ - - 'domain' => env('FILAMENT_DOMAIN'), - - /* - |-------------------------------------------------------------------------- - | Homepage URL + | Broadcasting |-------------------------------------------------------------------------- | - | This is the URL that Filament will redirect the user to when they click - | on the sidebar's header. - | - */ - - 'home_url' => '/dashboard', - - /* - |-------------------------------------------------------------------------- - | Brand Name - |-------------------------------------------------------------------------- + | By uncommenting the Laravel Echo configuration, you may connect Filament + | to any Pusher-compatible websockets server. | - | This will be displayed on the login page and in the sidebar's header. + | This will allow your users to receive real-time notifications. | */ - 'brand' => env('APP_NAME'), + 'broadcasting' => [ - /* - |-------------------------------------------------------------------------- - | Auth - |-------------------------------------------------------------------------- - | - | This is the configuration that Filament will use to handle authentication - | into the admin panel. - | - */ + // 'echo' => [ + // 'broadcaster' => 'pusher', + // 'key' => env('VITE_PUSHER_APP_KEY'), + // 'cluster' => env('VITE_PUSHER_APP_CLUSTER'), + // 'wsHost' => env('VITE_PUSHER_HOST'), + // 'wsPort' => env('VITE_PUSHER_PORT'), + // 'wssPort' => env('VITE_PUSHER_PORT'), + // 'authEndpoint' => '/broadcasting/auth', + // 'disableStats' => true, + // 'encrypted' => true, + // 'forceTLS' => true, + // ], - 'auth' => [ - 'guard' => env('FILAMENT_AUTH_GUARD', 'web'), - 'pages' => [ - 'login' => - \JeffGreco13\FilamentBreezy\Http\Livewire\Auth\Login::class, - ], ], /* |-------------------------------------------------------------------------- - | Pages + | Default Filesystem Disk |-------------------------------------------------------------------------- | - | This is the namespace and directory that Filament will automatically - | register pages from. You may also register pages here. + | This is the storage disk Filament will use to store files. You may use + | any of the disks defined in the `config/filesystems.php`. | */ - 'pages' => [ - 'namespace' => 'App\\Filament\\Pages', - 'path' => app_path('Filament/Pages'), - 'register' => [ - // Pages\Dashboard::class, - ], - ], + 'default_filesystem_disk' => env('FILAMENT_FILESYSTEM_DISK', 'public'), /* |-------------------------------------------------------------------------- - | Resources + | Assets Path |-------------------------------------------------------------------------- | - | This is the namespace and directory that Filament will automatically - | register resources from. You may also register resources here. - | - */ - - 'resources' => [ - 'namespace' => 'App\\Filament\\Resources', - 'path' => app_path('Filament/Resources'), - 'register' => [], - ], - - /* - |-------------------------------------------------------------------------- - | Widgets - |-------------------------------------------------------------------------- + | This is the directory where Filament's assets will be published to. It + | is relative to the `public` directory of your Laravel application. | - | This is the namespace and directory that Filament will automatically - | register dashboard widgets from. You may also register widgets here. + | After changing the path, you should run `php artisan filament:assets`. | */ - 'widgets' => [ - 'namespace' => 'App\\Filament\\Widgets', - 'path' => app_path('Filament/Widgets'), - 'register' => [ - // Widgets\AccountWidget::class, - // Widgets\FilamentInfoWidget::class, - ], - ], + 'assets_path' => null, /* |-------------------------------------------------------------------------- - | Livewire + | Cache Path |-------------------------------------------------------------------------- | - | This is the namespace and directory that Filament will automatically - | register Livewire components inside. + | This is the directory that Filament will use to store cache files that + | are used to optimize the registration of components. | - */ - - 'livewire' => [ - 'namespace' => 'App\\Filament', - 'path' => app_path('Filament'), - ], - - /* - |-------------------------------------------------------------------------- - | Dark mode - |-------------------------------------------------------------------------- - | - | By enabling this feature, your users are able to select between a light - | and dark appearance for the admin panel, or let their system decide. + | After changing the path, you should run `php artisan filament:cache-components`. | */ - 'dark_mode' => false, + 'cache_path' => base_path('bootstrap/cache/filament'), /* |-------------------------------------------------------------------------- - | Database notifications + | Livewire Loading Delay |-------------------------------------------------------------------------- | - | By enabling this feature, your users are able to open a slide-over within - | the admin panel to view their database notifications. + | This sets the delay before loading indicators appear. + | + | Setting this to 'none' makes indicators appear immediately, which can be + | desirable for high-latency connections. Setting it to 'default' applies + | Livewire's standard 200ms delay. | */ - 'database_notifications' => [ - 'enabled' => true, - 'polling_interval' => '30s', - ], + 'livewire_loading_delay' => 'default', /* |-------------------------------------------------------------------------- - | Broadcasting + | System Route Prefix |-------------------------------------------------------------------------- | - | By uncommenting the Laravel Echo configuration, you may connect your - | admin panel to any Pusher-compatible websockets server. - | - | This will allow your admin panel to receive real-time notifications. + | This is the prefix used for the system routes that Filament registers, + | such as the routes for downloading exports and failed import rows. | */ - 'broadcasting' => [ - - 'echo' => [ - 'broadcaster' => 'pusher', - 'key' => env('VITE_PUSHER_APP_KEY'), - 'cluster' => env('VITE_PUSHER_APP_CLUSTER'), - 'forceTLS' => true, - ], - - ], + 'system_route_prefix' => 'filament', /* |-------------------------------------------------------------------------- - | Layout + | Theme Colors (Buttons, Links, etc.) |-------------------------------------------------------------------------- - | - | This is the configuration for the general layout of the admin panel. - | - | You may configure the max content width from `xl` to `7xl`, or `full` - | for no max width. - | */ - - 'layout' => [ - 'actions' => [ - 'modal' => [ - 'actions' => [ - 'alignment' => 'left', - ], - ], - ], - 'forms' => [ - 'actions' => [ - 'alignment' => 'left', - ], - 'have_inline_labels' => false, + 'colors' => [ + 'primary' => [ + '50' => '#eff6ff', + '100' => '#dbeafe', + '200' => '#bfdbfe', + '300' => '#93c5fd', + '400' => '#60a5fa', + '500' => '#3b82f6', + '600' => '#2563eb', + '700' => '#1d4ed8', + '800' => '#1e40af', + '900' => '#1e3a8a', ], - 'footer' => [ - 'should_show_logo' => false, + 'secondary' => [ + '50' => '#f9fafb', + '100' => '#f3f4f6', + '200' => '#e5e7eb', + '300' => '#d1d5db', + '400' => '#9ca3af', + '500' => '#6b7280', + '600' => '#4b5563', + '700' => '#374151', + '800' => '#1f2937', + '900' => '#111827', ], - 'max_content_width' => 'full', - 'notifications' => [ - 'vertical_alignment' => 'bottom', - 'alignment' => 'right', + 'success' => [ + '50' => '#ecfdf5', + '100' => '#d1fae5', + '200' => '#a7f3d0', + '300' => '#6ee7b7', + '400' => '#34d399', + '500' => '#10b981', + '600' => '#059669', + '700' => '#047857', + '800' => '#065f46', + '900' => '#064e3b', ], - 'sidebar' => [ - 'is_collapsible_on_desktop' => true, - 'groups' => [ - 'are_collapsible' => true, - ], - 'width' => null, - 'collapsed_width' => null, - ], - ], - - /* - |-------------------------------------------------------------------------- - | Favicon - |-------------------------------------------------------------------------- - | - | This is the path to the favicon used for pages in the admin panel. - | - */ - - 'favicon' => null, - - /* - |-------------------------------------------------------------------------- - | Default Avatar Provider - |-------------------------------------------------------------------------- - | - | This is the service that will be used to retrieve default avatars if one - | has not been uploaded. - | - */ - - 'default_avatar_provider' => \Devaslanphp\FilamentAvatar\Core\FilamentUserAvatarProvider::class, - - /* - |-------------------------------------------------------------------------- - | Default Filesystem Disk - |-------------------------------------------------------------------------- - | - | This is the storage disk Filament will use to put media. You may use any - | of the disks defined in the `config/filesystems.php`. - | - */ - - 'default_filesystem_disk' => env('FILAMENT_FILESYSTEM_DRIVER', 'public'), - - /* - |-------------------------------------------------------------------------- - | Google Fonts - |-------------------------------------------------------------------------- - | - | This is the URL for Google Fonts that should be loaded. You may use any - | font, or set to `null` to prevent any Google Fonts from loading. - | - | When using a custom font, you should also set the font family in your - | custom theme's `tailwind.config.js` file. - | - */ - - 'google_fonts' => 'https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap', - - /* - |-------------------------------------------------------------------------- - | Middleware - |-------------------------------------------------------------------------- - | - | You may customize the middleware stack that Filament uses to handle - | requests. - | - */ - - 'middleware' => [ - 'auth' => [ - Authenticate::class, - 'verified' + 'warning' => [ + '50' => '#fffbeb', + '100' => '#fef3c7', + '200' => '#fde68a', + '300' => '#fcd34d', + '400' => '#fbbf24', + '500' => '#f59e0b', + '600' => '#d97706', + '700' => '#b45309', + '800' => '#92400e', + '900' => '#78350f', ], - 'base' => [ - EncryptCookies::class, - AddQueuedCookiesToResponse::class, - StartSession::class, - AuthenticateSession::class, - ShareErrorsFromSession::class, - VerifyCsrfToken::class, - SubstituteBindings::class, - DispatchServingFilamentEvent::class, - MirrorConfigToSubpackages::class, - LocaleMiddleware::class + 'danger' => [ + '50' => '#fef2f2', + '100' => '#fee2e2', + '200' => '#fecaca', + '300' => '#fca5a5', + '400' => '#f87171', + '500' => '#ef4444', + '600' => '#dc2626', + '700' => '#b91c1c', + '800' => '#991b1b', + '900' => '#7f1d1d', ], ], diff --git a/config/icon-picker.php b/config/icon-picker.php deleted file mode 100644 index 4d3f2bf3..00000000 --- a/config/icon-picker.php +++ /dev/null @@ -1,86 +0,0 @@ - [ - 'heroicons', - 'fontawesome', - ], -// example: -// 'sets' => 'heroicons', -// 'sets' => [ -// 'heroicons', -// 'fontawesome-solid', -// ], - - /* - |-------------------------------------------------------------------------- - | Default Columns - |-------------------------------------------------------------------------- - | - | This is the default value for the columns configuration. It is used by - | every icon picker, when not set explicitly. - | - | Can be either an integer from 1 - 12 or an array of integers - | with breakpoints (default, sm, md, lg, xl, 2xl) as the key. - | - */ - 'columns' => 3, -// example: -// 'columns' => [ -// 'default' => 1, -// 'lg' => 3, -// '2xl' => 5, -// ], - - /* - |-------------------------------------------------------------------------- - | Default Layout - |-------------------------------------------------------------------------- - | - | This is the default value for the layout configuration. It is used by - | every icon picker, when not set explicitly. - | - | FLOATING: The select will behave the same way as the default filament - | select. It will show when selected and hide when clicked outside. - | - | ON_TOP: The select options will always be visible in a catalogue-like - | grid view. - | - */ - 'layout' => \Guava\FilamentIconPicker\Layout::FLOATING, - - /* - |-------------------------------------------------------------------------- - | Caching - |-------------------------------------------------------------------------- - | - | This section lets you configure the caching option of the plugin. - | - | Since icon packs are often packed with a lots of icons, - | searching through all of them can take quite a lot of time, which is - | why the plugin caches each field with it's configuration and search queries. - | - | This section let's you configure how caching should be done or disable it - | if you wish. - | - */ - 'cache' => [ - 'enabled' => true, - 'duration' => '7 days', - ], - -]; diff --git a/database/migrations/2025_09_15_090545_create_completion_report_table.php b/database/migrations/2025_09_15_090545_create_completion_report_table.php new file mode 100644 index 00000000..bbbb9328 --- /dev/null +++ b/database/migrations/2025_09_15_090545_create_completion_report_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('month'); + $table->integer('year'); + $table->longText('completion_report'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('completion_report'); + } +}; diff --git a/database/migrations/2025_10_15_164158_update_icon_ticket_type.php b/database/migrations/2025_10_15_164158_update_icon_ticket_type.php new file mode 100644 index 00000000..5d8a3d07 --- /dev/null +++ b/database/migrations/2025_10_15_164158_update_icon_ticket_type.php @@ -0,0 +1,33 @@ +update([ + 'icon' => 'heroicon-o-document-text', + ]); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // Opsional: rollback, misal set ke null + DB::table('ticket_types')->update([ + 'icon' => null, + ]); + } +}; diff --git a/database/migrations/2025_10_15_164357_truncate_notifications_table.php b/database/migrations/2025_10_15_164357_truncate_notifications_table.php new file mode 100644 index 00000000..f247343c --- /dev/null +++ b/database/migrations/2025_10_15_164357_truncate_notifications_table.php @@ -0,0 +1,26 @@ +truncate(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // Tidak ada rollback, bisa dikosongkan atau log jika perlu + } +}; diff --git a/database/referential.sql b/database/referential.sql index 8abc1114..dfb31425 100644 --- a/database/referential.sql +++ b/database/referential.sql @@ -11,7 +11,7 @@ INSERT INTO `ticket_statuses` (`id`, `name`, `color`, `is_default`, `deleted_at` INSERT INTO `ticket_types` (`id`, `name`, `icon`, `color`, `is_default`, `deleted_at`, `created_at`, `updated_at`) VALUES (1, 'Task', 'heroicon-o-check-circle', '#00FFFF', 1, NULL, '2022-11-14 12:06:56', '2022-11-14 12:06:56'), -(2, 'Evolution', 'heroicon-o-clipboard-list', '#008000', 0, NULL, '2022-11-14 12:06:56', '2022-11-14 12:06:56'), +(2, 'Evolution', 'heroicon-o-clipboard-document-list', '#008000', 0, NULL, '2022-11-14 12:06:56', '2022-11-14 12:06:56'), (3, 'Bug', 'heroicon-o-x', '#ff0000', 0, NULL, '2022-11-14 12:06:56', '2022-11-14 12:06:56'); diff --git a/database/seeders/TicketTypeSeeder.php b/database/seeders/TicketTypeSeeder.php index d550bfe2..6418a63b 100644 --- a/database/seeders/TicketTypeSeeder.php +++ b/database/seeders/TicketTypeSeeder.php @@ -10,19 +10,19 @@ class TicketTypeSeeder extends Seeder private array $data = [ [ 'name' => 'Task', - 'icon' => 'heroicon-o-check-circle', + 'icon' => 'heroicon-o-clipboard-document-list', 'color' => '#00FFFF', 'is_default' => true ], [ 'name' => 'Evolution', - 'icon' => 'heroicon-o-clipboard-list', + 'icon' => 'heroicon-o-clipboard-document-list', 'color' => '#008000', 'is_default' => false ], [ 'name' => 'Bug', - 'icon' => 'heroicon-o-x', + 'icon' => 'heroicon-o-clipboard-document-list', 'color' => '#ff0000', 'is_default' => false ], diff --git a/package-lock.json b/package-lock.json index 4e4926fb..f8c4dafc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,30 +5,45 @@ "packages": { "": { "dependencies": { - "flowbite": "^1.5.3" + "flowbite": "^2.5.2" }, "devDependencies": { - "@tailwindcss/forms": "^0.5.3", - "@tailwindcss/typography": "^0.5.7", - "autoprefixer": "^10.4.13", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.19", + "autoprefixer": "^10.4.21", "axios": "^1.1.2", "laravel-vite-plugin": "^0.6.0", "lodash": "^4.17.19", - "postcss": "^8.1.14", + "postcss": "^8.5.6", + "postcss-nesting": "^13.0.2", "sass": "^1.55.0", - "tailwindcss": "^3.2.1", + "tailwindcss": "^3.4.18", "tippy.js": "^6.3.7", "vite": "^3.0.0" } }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", - "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -38,13 +53,14 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", - "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -53,11 +69,69 @@ "node": ">=12" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -71,6 +145,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -80,6 +155,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -88,6 +164,17 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@popperjs/core": { "version": "2.11.6", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", @@ -97,64 +184,134 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@tailwindcss/forms": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz", - "integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", + "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", "dev": true, + "license": "MIT", "dependencies": { "mini-svg-data-uri": "^1.2.3" }, "peerDependencies": { - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" } }, "node_modules/@tailwindcss/typography": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.7.tgz", - "integrity": "sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz", + "integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==", "dev": true, + "license": "MIT", "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", "postcss-selector-parser": "6.0.10" }, "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true, - "engines": { - "node": ">=0.4.0" - } + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.2", @@ -179,12 +336,13 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "dev": true, "funding": [ { @@ -194,14 +352,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -215,16 +378,34 @@ } }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz", + "integrity": "sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -234,22 +415,33 @@ "node": ">=8" } }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", "dev": true, "funding": [ { @@ -259,13 +451,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -274,19 +472,34 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001429", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz", - "integrity": "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==", + "version": "1.0.30001750", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz", + "integrity": "sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==", "dev": true, "funding": [ { @@ -296,20 +509,20 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -322,6 +535,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -338,17 +554,32 @@ "node": ">= 6" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -356,6 +587,31 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -368,13 +624,13 @@ "node": ">=4" } }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, "node_modules/delayed-stream": { @@ -382,27 +638,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -415,18 +655,98 @@ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true + "version": "1.5.237", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz", + "integrity": "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/esbuild": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz", - "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -434,38 +754,39 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.12", - "@esbuild/linux-loong64": "0.15.12", - "esbuild-android-64": "0.15.12", - "esbuild-android-arm64": "0.15.12", - "esbuild-darwin-64": "0.15.12", - "esbuild-darwin-arm64": "0.15.12", - "esbuild-freebsd-64": "0.15.12", - "esbuild-freebsd-arm64": "0.15.12", - "esbuild-linux-32": "0.15.12", - "esbuild-linux-64": "0.15.12", - "esbuild-linux-arm": "0.15.12", - "esbuild-linux-arm64": "0.15.12", - "esbuild-linux-mips64le": "0.15.12", - "esbuild-linux-ppc64le": "0.15.12", - "esbuild-linux-riscv64": "0.15.12", - "esbuild-linux-s390x": "0.15.12", - "esbuild-netbsd-64": "0.15.12", - "esbuild-openbsd-64": "0.15.12", - "esbuild-sunos-64": "0.15.12", - "esbuild-windows-32": "0.15.12", - "esbuild-windows-64": "0.15.12", - "esbuild-windows-arm64": "0.15.12" + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" } }, "node_modules/esbuild-android-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz", - "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -475,13 +796,14 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz", - "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -491,13 +813,14 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz", - "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -507,13 +830,14 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz", - "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -523,13 +847,14 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz", - "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -539,13 +864,14 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz", - "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -555,13 +881,14 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz", - "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -571,13 +898,14 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz", - "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -587,13 +915,14 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz", - "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -603,13 +932,14 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz", - "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -619,13 +949,14 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz", - "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -635,13 +966,14 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz", - "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -651,13 +983,14 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz", - "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -667,13 +1000,14 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz", - "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -683,13 +1017,14 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz", - "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -699,13 +1034,14 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz", - "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -715,13 +1051,14 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz", - "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -731,13 +1068,14 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz", - "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -747,13 +1085,14 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz", - "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -763,13 +1102,14 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz", - "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -779,25 +1119,33 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -808,6 +1156,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -816,19 +1165,21 @@ } }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -837,14 +1188,26 @@ } }, "node_modules/flowbite": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/flowbite/-/flowbite-1.5.3.tgz", - "integrity": "sha512-e2OHfndxTHtGMqcPqvqwg3gGLg57hmIDVgE/BazMDccgirQ0JEtirKnbZZ4WSOIEhNDgO9pJZuyC8rRlcMm6pQ==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/flowbite/-/flowbite-2.5.2.tgz", + "integrity": "sha512-kwFD3n8/YW4EG8GlY3Od9IoKND97kitO+/ejISHSqpn3vw2i5K/+ZI8Jm2V+KC4fGdnfi0XZ+TzYqQb4Q1LshA==", + "license": "MIT", "dependencies": { "@popperjs/core": "^2.9.3", + "flowbite-datepicker": "^1.3.0", "mini-svg-data-uri": "^1.4.3" } }, + "node_modules/flowbite-datepicker": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/flowbite-datepicker/-/flowbite-datepicker-1.3.2.tgz", + "integrity": "sha512-6Nfm0MCVX3mpaR7YSCjmEO2GO8CDt6CX8ZpQnGdeu03WUCWtEPQ/uy0PUiNtIJjJZWnX0Cm3H55MOhbD1g+E/g==", + "license": "MIT", + "dependencies": { + "@rollup/plugin-node-resolve": "^15.2.3", + "flowbite": "^2.0.0" + } + }, "node_modules/follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", @@ -865,14 +1228,34 @@ } } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -880,16 +1263,17 @@ } }, "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, "funding": { "type": "patreon", - "url": "https://www.patreon.com/infusion" + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fsevents": { @@ -907,66 +1291,174 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, + "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "has": "^1.0.3" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-extglob": { + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", @@ -975,6 +1467,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -987,15 +1489,55 @@ "node": ">=0.10.0" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, "node_modules/laravel-vite-plugin": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.6.1.tgz", @@ -1012,54 +1554,66 @@ } }, "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -1071,6 +1625,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1080,6 +1635,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -1095,19 +1651,48 @@ "mini-svg-data-uri": "cli.js" } }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -1115,6 +1700,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1123,10 +1709,11 @@ } }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", + "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -1146,6 +1733,16 @@ "node": ">=0.10.0" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", @@ -1155,17 +1752,51 @@ "node": ">= 6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -1184,14 +1815,25 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -1207,99 +1849,231 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.0.0" }, "peerDependencies": { "postcss": "^8.0.0" } }, "node_modules/postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, "engines": { "node": "^12 || ^14 || >= 16" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { - "postcss": "^8.3.3" + "postcss": "^8.4.21" } }, "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" + "lilconfig": "^3.1.1" }, "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">= 18" }, "peerDependencies": { + "jiti": ">=1.21.0", "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { + "jiti": { + "optional": true + }, "postcss": { "optional": true }, - "ts-node": { + "tsx": { + "optional": true + }, + "yaml": { "optional": true } } }, "node_modules/postcss-nested": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", - "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.10" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.2.14" } }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-selector-parser": { "version": "6.0.10", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", @@ -1343,25 +2117,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + ], + "license": "MIT" }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.3.0" } @@ -1379,37 +2143,42 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "devOptional": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -1439,6 +2208,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -1460,20 +2230,183 @@ "node": ">=12.0.0" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -1482,44 +2415,78 @@ } }, "node_modules/tailwindcss": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.1.tgz", - "integrity": "sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==", + "version": "3.4.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.18.tgz", + "integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==", "dev": true, + "license": "MIT", "dependencies": { + "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "micromatch": "^4.0.5", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.17", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "6.0.0", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" }, "engines": { - "node": ">=12.13.0" + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, - "peerDependencies": { - "postcss": "^8.0.9" + "engines": { + "node": ">=4" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/tippy.js": { @@ -1536,6 +2503,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -1543,10 +2511,17 @@ "node": ">=8.0" } }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -1556,14 +2531,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -1576,10 +2556,11 @@ "dev": true }, "node_modules/vite": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.10.tgz", - "integrity": "sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz", + "integrity": "sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.15.9", "postcss": "^8.4.18", @@ -1637,22 +2618,118 @@ "vite": "^2 || ^3" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, "engines": { - "node": ">=0.4" + "node": ">= 8" } }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } } } diff --git a/package.json b/package.json index 2618f6b0..ed94e665 100644 --- a/package.json +++ b/package.json @@ -5,19 +5,20 @@ "build": "vite build" }, "devDependencies": { - "@tailwindcss/forms": "^0.5.3", - "@tailwindcss/typography": "^0.5.7", - "autoprefixer": "^10.4.13", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.19", + "autoprefixer": "^10.4.21", "axios": "^1.1.2", "laravel-vite-plugin": "^0.6.0", "lodash": "^4.17.19", - "postcss": "^8.1.14", + "postcss": "^8.5.6", + "postcss-nesting": "^13.0.2", "sass": "^1.55.0", - "tailwindcss": "^3.2.1", + "tailwindcss": "^3.4.18", "tippy.js": "^6.3.7", "vite": "^3.0.0" }, "dependencies": { - "flowbite": "^1.5.3" + "flowbite": "^2.5.2" } } diff --git a/postcss.config.js b/postcss.config.js index fef1b225..736bf1b3 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,5 +1,6 @@ module.exports = { plugins: { + 'tailwindcss/nesting': 'postcss-nesting', tailwindcss: {}, autoprefixer: {}, }, diff --git a/public/build/manifest.json b/public/build/manifest.json index c371daa4..a3e06266 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -1,21 +1,21 @@ { "resources/js/filament.js": { - "file": "assets/filament.e0e55e99.js", + "file": "assets/filament.724cd7e9.js", "src": "resources/js/filament.js", "isEntry": true }, "resources/js/app.js": { - "file": "assets/app.af2990ba.js", + "file": "assets/app.8b46930f.js", "src": "resources/js/app.js", "isEntry": true }, "resources/css/filament.scss": { - "file": "assets/filament.b399b394.css", + "file": "assets/filament.0d016d93.css", "src": "resources/css/filament.scss", "isEntry": true }, "resources/css/app.scss": { - "file": "assets/app.99c4be01.css", + "file": "assets/app.5fece4a5.css", "src": "resources/css/app.scss", "isEntry": true } diff --git a/resources/css/app.scss b/resources/css/app.scss index ebc1c286..3aab278e 100644 --- a/resources/css/app.scss +++ b/resources/css/app.scss @@ -1,10 +1,12 @@ @use 'media-queries' as *; -@import '../../vendor/filament/forms/dist/module.esm.css'; @tailwind base; @tailwind components; @tailwind utilities; +@tailwind variants; + +@import './filament'; .main-menu { @apply transition-all relative z-40; diff --git a/resources/css/filament.scss b/resources/css/filament.scss index c288bdf8..0a0cb1a1 100644 --- a/resources/css/filament.scss +++ b/resources/css/filament.scss @@ -1,9 +1,33 @@ -@import '../../vendor/filament/filament/resources/css/app.css'; +@import "../../vendor/filament/support/dist/index.css"; +@import "../../vendor/filament/filament/resources/css/theme.css"; +@import "../../vendor/filament/filament/resources/css/index.css"; @import './kanban'; @import './dialogs'; @import './loading.io'; +.fi-layout>aside { + background-color: white; + box-shadow: 15px 15px 30px rgba(0, 0, 0, 0.1); +} + +.disabled-pointer img[data-popover-target] { + pointer-events: auto !important; + cursor: pointer; +} + +.fi-section { + height: 100%; +} + +.fi-ta-content { + overflow-y: hidden; +} + +.fi-wi-widget { + margin: 20px +} + .filament-header-heading { display: block; } @@ -51,3 +75,5 @@ label:has(.sprint-checkboxes) > span { width: 100%; } + + diff --git a/resources/js/flowbite-livewire.js b/resources/js/flowbite-livewire.js new file mode 100644 index 00000000..e97a48b5 --- /dev/null +++ b/resources/js/flowbite-livewire.js @@ -0,0 +1,11 @@ +document.addEventListener('livewire:navigated', () => { + if (window.Flowbite && typeof window.Flowbite.initPopovers === 'function') { + window.Flowbite.initPopovers(); + } +}); + +document.addEventListener('livewire:update', () => { + if (window.Flowbite && typeof window.Flowbite.initPopovers === 'function') { + window.Flowbite.initPopovers(); + } +}); diff --git a/resources/js/ticket-chart.js b/resources/js/ticket-chart.js new file mode 100644 index 00000000..17283de8 --- /dev/null +++ b/resources/js/ticket-chart.js @@ -0,0 +1,234 @@ +let ticketTrendChart = null; + +function renderTrendChart(labels, data) { + const ctx = document.getElementById('ticketTrendChart').getContext('2d'); + + if (ticketTrendChart) { + ticketTrendChart.destroy(); + } + + ticketTrendChart = new Chart(ctx, { + type: 'bar', + data: { + labels: labels, + datasets: [{ + label: 'Jumlah Tiket', + data: data, + backgroundColor: '#3b82f6', + }] + }, + options: { + responsive: true, + plugins: { legend: { display: true } } + } + }); +} + +window.addEventListener("updateTrendChart", event => { + console.log("Chart updated:", event.detail); + renderTrendChart(event.detail[0].labels, event.detail[0].data); +}); + +window.addEventListener("renderTrendChart", event => { + renderTrendChart(event.detail[0].labels, event.detail[0].data); +}); + +let ticketOwnerChart = null; + +function renderOwnerChart(labels, datasets) { + const ctx = document.getElementById('ticketOwnerChart').getContext('2d'); + + if (ticketOwnerChart) { + ticketOwnerChart.destroy(); + } + + ticketOwnerChart = new Chart(ctx, { + type: 'bar', + data: { + labels: labels, + datasets: datasets + }, + options: { + responsive: true, + plugins: { legend: { display: true } } + } + }); +} + +document.addEventListener('livewire:load', () => { + console.log('Livewire loaded, setting up listeners for TicketOwnerChart'); + Livewire.on('renderOwnerChart', data => renderOwnerChart(data.labels, data.datasets)); +}); + +window.addEventListener("updateOwnerChart", event => { + console.log(event); + renderOwnerChart(event.detail[0].labels, event.detail[0].datasets); +}); +window.addEventListener("renderOwnerChart", event => { + console.log(event); + renderOwnerChart(event.detail[0].labels, event.detail[0].datasets); +}); + +let ticketResponsibilityChart = null; + +function renderResponsibilityChart(labels, datasets) { + const ctx = document.getElementById('ticketResponsibilityChart').getContext('2d'); + + if (ticketResponsibilityChart) { + ticketResponsibilityChart.destroy(); + } + + ticketResponsibilityChart = new Chart(ctx, { + type: 'bar', + data: { + labels: labels, + datasets: datasets + }, + options: { + responsive: true, + plugins: { legend: { display: true } } + } + }); +} + +window.addEventListener("updateResponsibilityChart", event => { + renderResponsibilityChart(event.detail[0].labels, event.detail[0].datasets); +}); +window.addEventListener("renderResponsibilityChart", event => { + renderResponsibilityChart(event.detail[0].labels, event.detail[0].datasets); +}); + +let ticketServiceChart = null; + +function renderServiceChart(labels, data) { + const ctx = document.getElementById('ticketServiceChart').getContext('2d'); + + if (ticketServiceChart) { + ticketServiceChart.destroy(); + } + + ticketServiceChart = new Chart(ctx, { + type: 'bar', + data: { + labels: labels, + datasets: [{ + label: 'Jumlah Tiket', + data: data, + backgroundColor: '#3b82f6', + }] + }, + options: { + responsive: true, + plugins: { legend: { display: true } } + } + }); +} + +window.addEventListener("updateServiceChart", event => { + renderServiceChart(event.detail[0].labels, event.detail[0].data); +}); +window.addEventListener("renderServiceChart", event => { + renderServiceChart(event.detail[0].labels, event.detail[0].data); +}); + +let ticketApplicationChart = null; + +function renderApplicationChart(labels, data) { + const ctx = document.getElementById('ticketApplicationChart').getContext('2d'); + + if (ticketApplicationChart) { + ticketApplicationChart.destroy(); + } + + ticketApplicationChart = new Chart(ctx, { + type: 'bar', + data: { + labels: labels, + datasets: [{ + label: 'Jumlah Tiket', + data: data, + backgroundColor: '#3b82f6', + }] + }, + options: { + responsive: true, + plugins: { legend: { display: true } } + } + }); +} + +window.addEventListener("updateApplicationChart", event => { + renderApplicationChart(event.detail[0].labels, event.detail[0].data); +}); +window.addEventListener("renderApplicationChart", event => { + renderApplicationChart(event.detail[0].labels, event.detail[0].data); +}); + +let ticketDuplicateChart = null; + +// 10 warna siap pakai +const colors = [ + "#3b82f6", // biru + "#ef4444", // merah + "#10b981", // hijau + "#f59e0b", // oranye + "#8b5cf6", // ungu + "#ec4899", // pink + "#14b8a6", // teal + "#f97316", // amber + "#64748b", // abu + "#84cc16", // lime +]; + +function renderDuplicateChart(labels, data, urls) { + console.log(data.length) + const ctx = document.getElementById('ticketDuplicateChart').getContext('2d'); + const message = document.getElementById('duplicateChartMessage'); + + if (ticketDuplicateChart) { + ticketDuplicateChart.destroy(); + } + + // Kalau kosong + if (!data || data.length === 0 || data.every(v => v === 0)) { + console.log('no data') + message.style.display = 'block'; + // return; + } else { + console.log('has data') + message.style.display = 'none'; + } + + const backgroundColors = data.map((_, i) => colors[i % colors.length]); + + ticketDuplicateChart = new Chart(ctx, { + type: 'pie', + data: { + labels: labels, + datasets: [{ + label: 'Jumlah Tiket', + data: data, + backgroundColor: backgroundColors, + }] + }, + options: { + responsive: true, + plugins: { legend: { display: true } }, + onClick: (evt, activeEls) => { + if (activeEls.length > 0) { + const index = activeEls[0].index; + window.location.href = urls[index]; // 👈 langsung ke detail + } + } + } + }); +} + +window.addEventListener("updateDuplicateChart", event => { + console.log("Chart updated:", event.detail); + renderDuplicateChart(event.detail[0].labels, event.detail[0].data, event.detail[0].urls); +}); + +window.addEventListener("renderDuplicateChart", event => { + renderDuplicateChart(event.detail[0].labels, event.detail[0].data, event.detail[0].urls); +}); diff --git a/resources/views/components/base-layout.blade.php b/resources/views/components/base-layout.blade.php index 77b7f77e..9fad2f01 100644 --- a/resources/views/components/base-layout.blade.php +++ b/resources/views/components/base-layout.blade.php @@ -1,5 +1,5 @@ - +
@@ -10,6 +10,7 @@
- {{$slot}}
+
+
+ And here's some amazing content. It's very engaging. Right?
+