diff --git a/.cursor/rules/laravel-boost.mdc b/.cursor/rules/laravel-boost.mdc index 2cd4e6a..dad9e44 100644 --- a/.cursor/rules/laravel-boost.mdc +++ b/.cursor/rules/laravel-boost.mdc @@ -12,7 +12,7 @@ The Laravel Boost guidelines are specifically curated by Laravel maintainers for This application is a Laravel application and its main Laravel ecosystems package & versions are below. You are an expert with them all. Ensure you abide by these specific packages & versions. - php - 8.4.15 -- filament/filament (FILAMENT) - v3 +- filament/filament (FILAMENT) - v4 - inertiajs/inertia-laravel (INERTIA) - v2 - laravel/framework (LARAVEL) - v12 - laravel/nightwatch (NIGHTWATCH) - v1 @@ -648,13 +648,19 @@ Forms\Components\Select::make('user_id') -## Version 3 Changes To Focus On -- Resources are located in `app/Filament/Resources/` directory. -- Resource pages (List, Create, Edit) are auto-generated within the resource's directory - e.g., `app/Filament/Resources/PostResource/Pages/`. -- Forms use the `Forms\Components` namespace for form fields. -- Tables use the `Tables\Columns` namespace for table columns. -- A new `Filament\Forms\Components\RichEditor` component is available. -- Form and table schemas now use fluent method chaining. -- Added `php artisan filament:optimize` command for production optimization. -- Requires implementing `FilamentUser` contract for production access control. +### Important Version 4 Changes +- File visibility is now `private` by default. +- The `deferFilters` method from Filament v3 is now the default behavior in Filament v4, so users must click a button before the filters are applied to the table. To disable this behavior, you can use the `deferFilters(false)` method. +- The `Grid`, `Section`, and `Fieldset` layout components no longer span all columns by default. +- The `all` pagination page method is not available for tables by default. +- All action classes extend `Filament\Actions\Action`. No action classes exist in `Filament\Tables\Actions`. +- The `Form` & `Infolist` layout components have been moved to `Filament\Schemas\Components`, for example `Grid`, `Section`, `Fieldset`, `Tabs`, `Wizard`, etc. +- A new `Repeater` component for Forms has been added. +- Icons now use the `Filament\Support\Icons\Heroicon` Enum by default. Other options are available and documented. + +### Organize Component Classes Structure +- Schema components: `Schemas/Components/` +- Table columns: `Tables/Columns/` +- Table filters: `Tables/Filters/` +- Actions: `Actions/` diff --git a/app/Filament/Pages/Auth/Login.php b/app/Filament/Pages/Auth/Login.php index 36c21a4..932ead5 100644 --- a/app/Filament/Pages/Auth/Login.php +++ b/app/Filament/Pages/Auth/Login.php @@ -3,9 +3,8 @@ namespace App\Filament\Pages\Auth; use App\Enums\Environment; -use Filament\Pages\Auth\Login as BasePage; -class Login extends BasePage +class Login extends \Filament\Auth\Pages\Login { public function mount(): void { diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php deleted file mode 100644 index 0a302ca..0000000 --- a/app/Filament/Resources/UserResource.php +++ /dev/null @@ -1,118 +0,0 @@ -schema(self::formSchema()); - } - - public static function table(Table $table): Table - { - return $table - ->columns(self::tableSchema()) - ->actions([ - Tables\Actions\EditAction::make(), - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - ]), - ]); - } - - public static function getPages(): array - { - return [ - 'index' => Pages\ListUsers::route('/'), - 'create' => Pages\CreateUser::route('/create'), - 'edit' => Pages\EditUser::route('/{record}/edit'), - ]; - } - - public static function formSchema() - { - return [ - Forms\Components\TextInput::make('first_name') - ->autofocus() - ->required() - ->maxLength(255), - - Forms\Components\TextInput::make('last_name') - ->required() - ->maxLength(255), - - Forms\Components\TextInput::make('email') - ->required() - ->email() - ->maxLength(255), - - Forms\Components\TextInput::make('password') - ->required(fn (string $operation): bool => $operation === 'create') - ->password() - ->afterStateHydrated(function (Forms\Components\TextInput $component, $state) { - $component->state(''); - }) - ->dehydrated(fn (?string $state): bool => filled($state)) - ->maxLength(255), - - Forms\Components\DateTimePicker::make('email_verified_at'), - - Forms\Components\Select::make('roles') - ->preload() - ->multiple() - ->relationship('roles', 'name'), - ]; - } - - public static function tableSchema() - { - return [ - Tables\Columns\TextColumn::make('name') - ->getStateUsing(fn ($record) => $record->fullName) - ->searchable() - ->sortable(), - - Tables\Columns\TextColumn::make('email') - ->searchable() - ->sortable(), - - Tables\Columns\IconColumn::make('email_verified') - ->getStateUsing(fn ($record) => $record->email_verified_at) - ->boolean() - ->sortable(), - - Tables\Columns\TextColumn::make('roles') - ->getStateUsing(fn ($record) => $record->roles->pluck('name')->join(', ')) - ->searchable() - ->sortable(), - - Tables\Columns\TextColumn::make('created_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - - Tables\Columns\TextColumn::make('updated_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - ]; - } -} diff --git a/app/Filament/Resources/UserResource/Pages/CreateUser.php b/app/Filament/Resources/Users/Pages/CreateUser.php similarity index 62% rename from app/Filament/Resources/UserResource/Pages/CreateUser.php rename to app/Filament/Resources/Users/Pages/CreateUser.php index 78a3894..125b3ff 100644 --- a/app/Filament/Resources/UserResource/Pages/CreateUser.php +++ b/app/Filament/Resources/Users/Pages/CreateUser.php @@ -1,8 +1,8 @@ components([ + TextInput::make('first_name') + ->autofocus() + ->required() + ->maxLength(255), + + TextInput::make('last_name') + ->required() + ->maxLength(255), + + TextInput::make('email') + ->required() + ->email() + ->maxLength(255), + + TextInput::make('password') + ->required(fn (string $operation): bool => $operation === 'create') + ->password() + ->afterStateHydrated(function (TextInput $component, $state) { + $component->state(''); + }) + ->dehydrated(fn (?string $state): bool => filled($state)) + ->maxLength(255), + + DateTimePicker::make('email_verified_at'), + + Select::make('roles') + ->preload() + ->multiple() + ->relationship('roles', 'name'), + ]); + } +} diff --git a/app/Filament/Resources/Users/Tables/UsersTable.php b/app/Filament/Resources/Users/Tables/UsersTable.php new file mode 100644 index 0000000..b1c7636 --- /dev/null +++ b/app/Filament/Resources/Users/Tables/UsersTable.php @@ -0,0 +1,56 @@ +columns([ + TextColumn::make('name') + ->getStateUsing(fn ($record) => $record->fullName) + ->searchable() + ->sortable(), + + TextColumn::make('email') + ->searchable() + ->sortable(), + + IconColumn::make('email_verified') + ->getStateUsing(fn ($record) => $record->email_verified_at) + ->boolean() + ->sortable(), + + TextColumn::make('roles') + ->getStateUsing(fn ($record) => $record->roles->pluck('name')->join(', ')) + ->searchable() + ->sortable(), + + TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + + TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->recordActions([ + EditAction::make(), + ]) + ->toolbarActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]); + } +} diff --git a/app/Filament/Resources/Users/UserResource.php b/app/Filament/Resources/Users/UserResource.php new file mode 100644 index 0000000..1b7ec44 --- /dev/null +++ b/app/Filament/Resources/Users/UserResource.php @@ -0,0 +1,41 @@ + ListUsers::route('/'), + 'create' => CreateUser::route('/create'), + 'edit' => EditUser::route('/{record}/edit'), + ]; + } +} diff --git a/app/Http/Controllers/RegisterController.php b/app/Http/Controllers/RegisterController.php index 84b5db3..b28d6b0 100644 --- a/app/Http/Controllers/RegisterController.php +++ b/app/Http/Controllers/RegisterController.php @@ -6,7 +6,7 @@ use App\Enums\Role; use App\Http\Requests\Register\RegisterStoreRequest; use App\Models\User; -use Filament\Events\Auth\Registered; +use Filament\Auth\Events\Registered; class RegisterController extends Controller { diff --git a/app/Models/User.php b/app/Models/User.php index aa953c9..352bbef 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -82,9 +82,6 @@ public function canAccessPanel(?Panel $panel = null): bool return $this->hasRole([Role::SUPER_ADMIN, Role::ADMIN]); } - /** - * @codeCoverageIgnore - */ public function getFilamentName(): string { return $this->fullName; diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index f2b5183..5150903 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -30,7 +30,9 @@ public function boot(): void Vite::useAggressivePrefetching(); Table::configureUsing(function (Table $table): void { - $table->defaultPaginationPageOption(50); + $table + ->defaultPaginationPageOption(50) + ->paginationPageOptions([5, 10, 25, 50, 'all']); }); Health::checks([ diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 40064ed..8c02392 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -2,12 +2,16 @@ namespace App\Providers; +use App\Policies\PermissionPolicy; +use App\Policies\RolePolicy; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; +use Spatie\Permission\Models\Permission; +use Spatie\Permission\Models\Role; class AuthServiceProvider extends ServiceProvider { protected $policies = [ - \Spatie\Permission\Models\Role::class => \App\Policies\RolePolicy::class, - \Spatie\Permission\Models\Permission::class => \App\Policies\PermissionPolicy::class, + Role::class => RolePolicy::class, + Permission::class => PermissionPolicy::class, ]; } diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index ab9cd72..55d85b2 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -2,10 +2,11 @@ namespace App\Providers\Filament; +use App\Filament\Pages\Auth\Login; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DispatchServingFilamentEvent; -use Filament\Pages; +use Filament\Pages\Dashboard; use Filament\Panel; use Filament\PanelProvider; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; @@ -24,14 +25,14 @@ public function panel(Panel $panel): Panel ->default() ->id('admin') ->path('admin') - ->login(\App\Filament\Pages\Auth\Login::class) + ->login(Login::class) ->colors([ 'primary' => '#1e293b', ]) ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources') ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages') ->pages([ - Pages\Dashboard::class, + Dashboard::class, ]) ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets') ->middleware([ diff --git a/composer.json b/composer.json index eb70bf8..316eb14 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "license": "MIT", "require": { "php": "^8.2", - "filament/filament": "^3.2", + "filament/filament": "^4.0", "inertiajs/inertia-laravel": "^2.0", "laravel/framework": "^12.0", "laravel/nightwatch": "^1.19", diff --git a/composer.lock b/composer.lock index 7bc4c93..9853b49 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a75519e0be7787122c188e9bc5959737", + "content-hash": "caf6685e70a1d497c47bbb7b7119c54b", "packages": [ { "name": "anourvalar/eloquent-serialize", @@ -351,6 +351,165 @@ ], "time": "2024-02-09T16:56:22+00:00" }, + { + "name": "chillerlan/php-qrcode", + "version": "5.0.5", + "source": { + "type": "git", + "url": "https://github.com/chillerlan/php-qrcode.git", + "reference": "7b66282572fc14075c0507d74d9837dab25b38d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/7b66282572fc14075c0507d74d9837dab25b38d6", + "reference": "7b66282572fc14075c0507d74d9837dab25b38d6", + "shasum": "" + }, + "require": { + "chillerlan/php-settings-container": "^2.1.6 || ^3.2.1", + "ext-mbstring": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "chillerlan/php-authenticator": "^4.3.1 || ^5.2.1", + "ext-fileinfo": "*", + "phan/phan": "^5.5.2", + "phpcompatibility/php-compatibility": "10.x-dev", + "phpmd/phpmd": "^2.15", + "phpunit/phpunit": "^9.6", + "setasign/fpdf": "^1.8.2", + "slevomat/coding-standard": "^8.23.0", + "squizlabs/php_codesniffer": "^4.0.0" + }, + "suggest": { + "chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.", + "setasign/fpdf": "Required to use the QR FPDF output.", + "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code" + }, + "type": "library", + "autoload": { + "psr-4": { + "chillerlan\\QRCode\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT", + "Apache-2.0" + ], + "authors": [ + { + "name": "Kazuhiko Arase", + "homepage": "https://github.com/kazuhikoarase/qrcode-generator" + }, + { + "name": "ZXing Authors", + "homepage": "https://github.com/zxing/zxing" + }, + { + "name": "Ashot Khanamiryan", + "homepage": "https://github.com/khanamiryan/php-qrcode-detector-decoder" + }, + { + "name": "Smiley", + "email": "smiley@chillerlan.net", + "homepage": "https://github.com/codemasher" + }, + { + "name": "Contributors", + "homepage": "https://github.com/chillerlan/php-qrcode/graphs/contributors" + } + ], + "description": "A QR Code generator and reader with a user-friendly API. PHP 7.4+", + "homepage": "https://github.com/chillerlan/php-qrcode", + "keywords": [ + "phpqrcode", + "qr", + "qr code", + "qr-reader", + "qrcode", + "qrcode-generator", + "qrcode-reader" + ], + "support": { + "docs": "https://php-qrcode.readthedocs.io", + "issues": "https://github.com/chillerlan/php-qrcode/issues", + "source": "https://github.com/chillerlan/php-qrcode" + }, + "funding": [ + { + "url": "https://ko-fi.com/codemasher", + "type": "Ko-Fi" + } + ], + "time": "2025-11-23T23:51:44+00:00" + }, + { + "name": "chillerlan/php-settings-container", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/chillerlan/php-settings-container.git", + "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/95ed3e9676a1d47cab2e3174d19b43f5dbf52681", + "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^8.1" + }, + "require-dev": { + "phpmd/phpmd": "^2.15", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-deprecation-rules": "^1.2", + "phpunit/phpunit": "^10.5", + "squizlabs/php_codesniffer": "^3.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "chillerlan\\Settings\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Smiley", + "email": "smiley@chillerlan.net", + "homepage": "https://github.com/codemasher" + } + ], + "description": "A container class for immutable settings objects. Not a DI container.", + "homepage": "https://github.com/chillerlan/php-settings-container", + "keywords": [ + "Settings", + "configuration", + "container", + "helper" + ], + "support": { + "issues": "https://github.com/chillerlan/php-settings-container/issues", + "source": "https://github.com/chillerlan/php-settings-container" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4", + "type": "custom" + }, + { + "url": "https://ko-fi.com/codemasher", + "type": "ko_fi" + } + ], + "time": "2024-07-16T11:13:48+00:00" + }, { "name": "composer/semver", "version": "3.4.4", @@ -608,160 +767,6 @@ }, "time": "2024-07-08T12:26:09+00:00" }, - { - "name": "doctrine/dbal", - "version": "4.4.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", - "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.1.5", - "php": "^8.2", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "14.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "2.1.30", - "phpstan/phpstan-phpunit": "2.0.7", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "11.5.23", - "slevomat/coding-standard": "8.24.0", - "squizlabs/php_codesniffer": "4.0.0", - "symfony/cache": "^6.3.8|^7.0|^8.0", - "symfony/console": "^5.4|^6.3|^7.0|^8.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.4.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2025-12-04T10:11:03+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<=7.5 || >=13" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^12 || ^13", - "phpstan/phpstan": "1.4.10 || 2.1.11", - "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", - "psr/log": "^1 || ^2 || ^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.5" - }, - "time": "2025-04-07T20:06:18+00:00" - }, { "name": "doctrine/inflector", "version": "2.1.0", @@ -1062,16 +1067,16 @@ }, { "name": "filament/actions", - "version": "v3.3.45", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "4582f2da9ed0660685b8e0849d32f106bc8a4b2d" + "reference": "3dbe8d3f4dad4865923213bc04f76c45cb1579a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/4582f2da9ed0660685b8e0849d32f106bc8a4b2d", - "reference": "4582f2da9ed0660685b8e0849d32f106bc8a4b2d", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/3dbe8d3f4dad4865923213bc04f76c45cb1579a5", + "reference": "3dbe8d3f4dad4865923213bc04f76c45cb1579a5", "shasum": "" }, "require": { @@ -1080,13 +1085,9 @@ "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", + "league/csv": "^9.27", "openspout/openspout": "^4.23", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" + "php": "^8.2" }, "type": "library", "extra": { @@ -1111,43 +1112,35 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-09-28T22:06:00+00:00" + "time": "2025-12-05T14:48:49+00:00" }, { "name": "filament/filament", - "version": "v3.3.45", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "1cc3a0b06cb287048c53d49b3915064a8fc6449f" + "reference": "61432a1c42c81e14a8af6a506450a49e02125ef5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/1cc3a0b06cb287048c53d49b3915064a8fc6449f", - "reference": "1cc3a0b06cb287048c53d49b3915064a8fc6449f", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/61432a1c42c81e14a8af6a506450a49e02125ef5", + "reference": "61432a1c42c81e14a8af6a506450a49e02125ef5", "shasum": "" }, "require": { - "danharrin/livewire-rate-limiting": "^0.3|^1.0|^2.0", + "chillerlan/php-qrcode": "^5.0", "filament/actions": "self.version", "filament/forms": "self.version", "filament/infolists": "self.version", "filament/notifications": "self.version", + "filament/schemas": "self.version", "filament/support": "self.version", "filament/tables": "self.version", "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" + "php": "^8.2", + "pragmarx/google2fa": "^8.0|^9.0", + "pragmarx/google2fa-qrcode": "^3.0" }, "type": "library", "extra": { @@ -1176,35 +1169,29 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-11-11T10:10:18+00:00" + "time": "2025-12-05T14:50:15+00:00" }, { "name": "filament/forms", - "version": "v3.3.45", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "da5401bf3684b6abc6cf1d8e152f01b25d815319" + "reference": "eb7b20c4f09d8747cd6c08e980b672e60742b0f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/da5401bf3684b6abc6cf1d8e152f01b25d815319", - "reference": "da5401bf3684b6abc6cf1d8e152f01b25d815319", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/eb7b20c4f09d8747cd6c08e980b672e60742b0f8", + "reference": "eb7b20c4f09d8747cd6c08e980b672e60742b0f8", "shasum": "" }, "require": { "danharrin/date-format-converter": "^0.3", "filament/actions": "self.version", + "filament/schemas": "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/validation": "^10.45|^11.0|^12.0", - "illuminate/view": "^10.45|^11.0|^12.0", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" + "php": "^8.2", + "ueberdosis/tiptap-php": "^2.0" }, "type": "library", "extra": { @@ -1232,33 +1219,27 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-10-06T21:42:10+00:00" + "time": "2025-12-05T14:53:39+00:00" }, { "name": "filament/infolists", - "version": "v3.3.45", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "5a519cf36a20039ccba8491a52028a8619cb70cb" + "reference": "0a85cf19262610d607d873644d4fb33e620fe126" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/5a519cf36a20039ccba8491a52028a8619cb70cb", - "reference": "5a519cf36a20039ccba8491a52028a8619cb70cb", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/0a85cf19262610d607d873644d4fb33e620fe126", + "reference": "0a85cf19262610d607d873644d4fb33e620fe126", "shasum": "" }, "require": { "filament/actions": "self.version", + "filament/schemas": "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" + "php": "^8.2" }, "type": "library", "extra": { @@ -1283,31 +1264,26 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-11-11T10:09:16+00:00" + "time": "2025-11-28T11:18:41+00:00" }, { "name": "filament/notifications", - "version": "v3.3.45", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "e94502a23ccdb2a74c7cc408db3291c36371231c" + "reference": "f8657e9b98f549f316daf74cf24a659b85a10e12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/e94502a23ccdb2a74c7cc408db3291c36371231c", - "reference": "e94502a23ccdb2a74c7cc408db3291c36371231c", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/f8657e9b98f549f316daf74cf24a659b85a10e12", + "reference": "f8657e9b98f549f316daf74cf24a659b85a10e12", "shasum": "" }, "require": { "filament/actions": "self.version", "filament/support": "self.version", - "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" + "php": "^8.2" }, "type": "library", "extra": { @@ -1319,7 +1295,7 @@ }, "autoload": { "files": [ - "src/Testing/Autoload.php" + "src/Testing/helpers.php" ], "psr-4": { "Filament\\Notifications\\": "src" @@ -1335,38 +1311,128 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-11-11T10:09:28+00:00" + "time": "2025-11-28T11:21:34+00:00" + }, + { + "name": "filament/query-builder", + "version": "v4.3.0", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/query-builder.git", + "reference": "0a21bf8bcacfad44cf0cd00b92f83dfb8c402714" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/0a21bf8bcacfad44cf0cd00b92f83dfb8c402714", + "reference": "0a21bf8bcacfad44cf0cd00b92f83dfb8c402714", + "shasum": "" + }, + "require": { + "filament/actions": "self.version", + "filament/forms": "self.version", + "filament/schemas": "self.version", + "filament/support": "self.version", + "php": "^8.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\QueryBuilder\\QueryBuilderServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\QueryBuilder\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A powerful query builder component for Filament.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2025-12-05T14:53:02+00:00" + }, + { + "name": "filament/schemas", + "version": "v4.3.0", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/schemas.git", + "reference": "02ec53daed03d2feae75832db0920c4357079133" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/schemas/zipball/02ec53daed03d2feae75832db0920c4357079133", + "reference": "02ec53daed03d2feae75832db0920c4357079133", + "shasum": "" + }, + "require": { + "danharrin/date-format-converter": "^0.3", + "filament/actions": "self.version", + "filament/support": "self.version", + "php": "^8.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Schemas\\SchemasServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Schemas\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful UI 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-12-05T14:53:55+00:00" }, { "name": "filament/support", - "version": "v3.3.45", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "afafd5e7a2f8cf052f70f989b52d82d0a1df5c78" + "reference": "7c644018cc5c9a74503039ecf7ff10f340123a8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/afafd5e7a2f8cf052f70f989b52d82d0a1df5c78", - "reference": "afafd5e7a2f8cf052f70f989b52d82d0a1df5c78", + "url": "https://api.github.com/repos/filamentphp/support/zipball/7c644018cc5c9a74503039ecf7ff10f340123a8c", + "reference": "7c644018cc5c9a74503039ecf7ff10f340123a8c", "shasum": "" }, "require": { "blade-ui-kit/blade-heroicons": "^2.5", - "doctrine/dbal": "^3.2|^4.0", + "danharrin/livewire-rate-limiting": "^2.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", + "illuminate/contracts": "^11.28|^12.0", + "kirschbaum-development/eloquent-power-joins": "^4.0", + "league/uri-components": "^7.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", + "nette/php-generator": "^4.0", + "php": "^8.2", + "ryangjchandler/blade-capture-directive": "^1.0", + "spatie/invade": "^2.0", "spatie/laravel-package-tools": "^1.9", - "symfony/console": "^6.0|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0" + "symfony/console": "^7.0", + "symfony/html-sanitizer": "^7.0" }, "type": "library", "extra": { @@ -1394,34 +1460,28 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-08-12T13:15:44+00:00" + "time": "2025-12-05T14:53:38+00:00" }, { "name": "filament/tables", - "version": "v3.3.45", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "2e1e3aeeeccd6b74e5d038325af52635d1108e4c" + "reference": "ef34c7026936d0d0f33e087d1dc25a23768b1af5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/2e1e3aeeeccd6b74e5d038325af52635d1108e4c", - "reference": "2e1e3aeeeccd6b74e5d038325af52635d1108e4c", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/ef34c7026936d0d0f33e087d1dc25a23768b1af5", + "reference": "ef34c7026936d0d0f33e087d1dc25a23768b1af5", "shasum": "" }, "require": { "filament/actions": "self.version", "filament/forms": "self.version", + "filament/query-builder": "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" + "php": "^8.2" }, "type": "library", "extra": { @@ -1446,26 +1506,26 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-09-17T10:47:13+00:00" + "time": "2025-12-05T14:53:40+00:00" }, { "name": "filament/widgets", - "version": "v3.3.45", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "5b956f884aaef479f6091463cb829e7c9f2afc2c" + "reference": "495409437dfcd524313dcd6d605b97298fc487b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/5b956f884aaef479f6091463cb829e7c9f2afc2c", - "reference": "5b956f884aaef479f6091463cb829e7c9f2afc2c", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/495409437dfcd524313dcd6d605b97298fc487b2", + "reference": "495409437dfcd524313dcd6d605b97298fc487b2", "shasum": "" }, "require": { + "filament/schemas": "self.version", "filament/support": "self.version", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" + "php": "^8.2" }, "type": "library", "extra": { @@ -1490,7 +1550,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-06-12T15:11:14+00:00" + "time": "2025-11-28T11:22:05+00:00" }, { "name": "fruitcake/php-cors", @@ -3357,6 +3417,91 @@ ], "time": "2025-11-18T12:17:23+00:00" }, + { + "name": "league/uri-components", + "version": "7.6.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-components.git", + "reference": "ffa1215dbee72ee4b7bc08d983d25293812456c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/ffa1215dbee72ee4b7bc08d983d25293812456c2", + "reference": "ffa1215dbee72ee4b7bc08d983d25293812456c2", + "shasum": "" + }, + "require": { + "league/uri": "^7.6", + "php": "^8.1" + }, + "suggest": { + "bakame/aide-uri": "A polyfill for PHP8.1 until PHP8.4 to add support to PHP Native URI parser", + "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", + "ext-mbstring": "to use the sorting algorithm of URLSearchParams", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle WHATWG URL", + "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": "URI components manipulation library", + "homepage": "http://uri.thephpleague.com", + "keywords": [ + "authority", + "components", + "fragment", + "host", + "middleware", + "modifier", + "path", + "port", + "query", + "rfc3986", + "scheme", + "uri", + "url", + "userinfo" + ], + "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-components/tree/7.6.0" + }, + "funding": [ + { + "url": "https://github.com/nyamsprod", + "type": "github" + } + ], + "time": "2025-11-18T12:17:23+00:00" + }, { "name": "league/uri-interfaces", "version": "7.6.0", @@ -3782,15 +3927,87 @@ "type": "github" }, { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2025-12-02T21:04:28+00:00" + }, + { + "name": "nette/php-generator", + "version": "v4.2.0", + "source": { + "type": "git", + "url": "https://github.com/nette/php-generator.git", + "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/php-generator/zipball/4707546a1f11badd72f5d82af4f8a6bc64bd56ac", + "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0.6", + "php": "8.1 - 8.5" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/tester": "^2.4", + "nikic/php-parser": "^5.0", + "phpstan/phpstan-nette": "^2.0@stable", + "tracy/tracy": "^2.8" + }, + "suggest": { + "nikic/php-parser": "to use ClassType::from(withBodies: true) & ClassType::fromCode()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" }, { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", - "type": "tidelift" + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "time": "2025-12-02T21:04:28+00:00" + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.5 features.", + "homepage": "https://nette.org", + "keywords": [ + "code", + "nette", + "php", + "scaffolding" + ], + "support": { + "issues": "https://github.com/nette/php-generator/issues", + "source": "https://github.com/nette/php-generator/tree/v4.2.0" + }, + "time": "2025-08-06T18:24:31+00:00" }, { "name": "nette/schema", @@ -4184,6 +4401,75 @@ ], "time": "2025-09-03T16:03:54+00:00" }, + { + "name": "paragonie/constant_time_encoding", + "version": "v3.1.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "shasum": "" + }, + "require": { + "php": "^8" + }, + "require-dev": { + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2025-09-24T15:06:41+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.4", @@ -4307,31 +4593,96 @@ "time": "2025-08-30T15:50:23+00:00" }, { - "name": "psr/cache", - "version": "3.0.0", + "name": "pragmarx/google2fa", + "version": "v9.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + "url": "https://github.com/antonioribeiro/google2fa.git", + "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/e6bc62dd6ae83acc475f57912e27466019a1f2cf", + "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf", "shasum": "" }, "require": { - "php": ">=8.0.0" + "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/" + } + }, + "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/v9.0.0" + }, + "time": "2025-09-19T22:51:08+00:00" + }, + { + "name": "pragmarx/google2fa-qrcode", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/google2fa-qrcode.git", + "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/ce4d8a729b6c93741c607cfb2217acfffb5bf76b", + "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "pragmarx/google2fa": ">=4.0" + }, + "require-dev": { + "bacon/bacon-qr-code": "^2.0", + "chillerlan/php-qrcode": "^1.0|^2.0|^3.0|^4.0", + "khanamiryan/qrcode-detector-decoder": "^1.0", + "phpunit/phpunit": "~4|~5|~6|~7|~8|~9" + }, + "suggest": { + "bacon/bacon-qr-code": "For QR Code generation, requires imagick", + "chillerlan/php-qrcode": "For QR Code generation" }, "type": "library", "extra": { + "component": "package", "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" } }, "autoload": { "psr-4": { - "Psr\\Cache\\": "src/" + "PragmaRX\\Google2FAQRCode\\": "src/", + "PragmaRX\\Google2FAQRCode\\Tests\\": "tests/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4340,20 +4691,25 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" } ], - "description": "Common interface for caching libraries", + "description": "QR Code package for Google2FA", "keywords": [ - "cache", - "psr", - "psr-6" + "2fa", + "Authentication", + "Two Factor Authentication", + "google2fa", + "qr code", + "qrcode" ], "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" + "issues": "https://github.com/antonioribeiro/google2fa-qrcode/issues", + "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/v3.0.0" }, - "time": "2021-02-03T23:26:27+00:00" + "time": "2021-08-15T12:53:48+00:00" }, { "name": "psr/clock", @@ -5123,63 +5479,82 @@ "time": "2025-02-25T09:09:36+00:00" }, { - "name": "spatie/color", - "version": "1.8.0", + "name": "scrivo/highlight.php", + "version": "v9.18.1.10", "source": { "type": "git", - "url": "https://github.com/spatie/color.git", - "reference": "142af7fec069a420babea80a5412eb2f646dcd8c" + "url": "https://github.com/scrivo/highlight.php.git", + "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/color/zipball/142af7fec069a420babea80a5412eb2f646dcd8c", - "reference": "142af7fec069a420babea80a5412eb2f646dcd8c", + "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/850f4b44697a2552e892ffe71490ba2733c2fc6e", + "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e", "shasum": "" }, "require": { - "php": "^7.3|^8.0" + "ext-json": "*", + "php": ">=5.4" }, "require-dev": { - "pestphp/pest": "^1.22", - "phpunit/phpunit": "^6.5||^9.0" + "phpunit/phpunit": "^4.8|^5.7", + "sabberworm/php-css-parser": "^8.3", + "symfony/finder": "^2.8|^3.4|^5.4", + "symfony/var-dumper": "^2.8|^3.4|^5.4" + }, + "suggest": { + "ext-mbstring": "Allows highlighting code with unicode characters and supports language with unicode keywords" }, "type": "library", "autoload": { - "psr-4": { - "Spatie\\Color\\": "src" + "files": [ + "HighlightUtilities/functions.php" + ], + "psr-0": { + "Highlight\\": "", + "HighlightUtilities\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Sebastian De Deyne", - "email": "sebastian@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" + "name": "Geert Bergman", + "homepage": "http://www.scrivo.org/", + "role": "Project Author" + }, + { + "name": "Vladimir Jimenez", + "homepage": "https://allejo.io", + "role": "Maintainer" + }, + { + "name": "Martin Folkers", + "homepage": "https://twobrain.io", + "role": "Contributor" } ], - "description": "A little library to handle color conversions", - "homepage": "https://github.com/spatie/color", + "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js", "keywords": [ - "color", - "conversion", - "rgb", - "spatie" + "code", + "highlight", + "highlight.js", + "highlight.php", + "syntax" ], "support": { - "issues": "https://github.com/spatie/color/issues", - "source": "https://github.com/spatie/color/tree/1.8.0" + "issues": "https://github.com/scrivo/highlight.php/issues", + "source": "https://github.com/scrivo/highlight.php" }, "funding": [ { - "url": "https://github.com/spatie", + "url": "https://github.com/allejo", "type": "github" } ], - "time": "2025-02-10T09:22:41+00:00" + "time": "2022-12-17T21:53:22+00:00" }, { "name": "spatie/enum", @@ -5753,6 +6128,71 @@ ], "time": "2025-10-02T14:36:02+00:00" }, + { + "name": "spatie/shiki-php", + "version": "2.3.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/shiki-php.git", + "reference": "a2e78a9ff8a1290b25d550be8fbf8285c13175c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/shiki-php/zipball/a2e78a9ff8a1290b25d550be8fbf8285c13175c5", + "reference": "a2e78a9ff8a1290b25d550be8fbf8285c13175c5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^8.0", + "symfony/process": "^5.4|^6.4|^7.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v3.0", + "pestphp/pest": "^1.8", + "phpunit/phpunit": "^9.5", + "spatie/pest-plugin-snapshots": "^1.1", + "spatie/ray": "^1.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\ShikiPhp\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rias Van der Veken", + "email": "rias@spatie.be", + "role": "Developer" + }, + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" + } + ], + "description": "Highlight code using Shiki in PHP", + "homepage": "https://github.com/spatie/shiki-php", + "keywords": [ + "shiki", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/shiki-php/tree/2.3.2" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-02-21T14:16:57+00:00" + }, { "name": "spatie/temporary-directory", "version": "2.3.0", @@ -8688,6 +9128,75 @@ }, "time": "2024-12-21T16:25:41+00:00" }, + { + "name": "ueberdosis/tiptap-php", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ueberdosis/tiptap-php.git", + "reference": "458194ad0f8b0cf616fecdf451a84f9a6c1f3056" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ueberdosis/tiptap-php/zipball/458194ad0f8b0cf616fecdf451a84f9a6c1f3056", + "reference": "458194ad0f8b0cf616fecdf451a84f9a6c1f3056", + "shasum": "" + }, + "require": { + "php": "^8.0", + "scrivo/highlight.php": "^9.18", + "spatie/shiki-php": "^2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.5", + "pestphp/pest": "^1.21", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tiptap\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Hans Pagel", + "email": "humans@tiptap.dev", + "role": "Developer" + } + ], + "description": "A PHP package to work with Tiptap output", + "homepage": "https://github.com/ueberdosis/tiptap-php", + "keywords": [ + "prosemirror", + "tiptap", + "ueberdosis" + ], + "support": { + "issues": "https://github.com/ueberdosis/tiptap-php/issues", + "source": "https://github.com/ueberdosis/tiptap-php/tree/2.0.0" + }, + "funding": [ + { + "url": "https://tiptap.dev/pricing", + "type": "custom" + }, + { + "url": "https://github.com/ueberdosis", + "type": "github" + }, + { + "url": "https://opencollective.com/tiptap", + "type": "open_collective" + } + ], + "time": "2025-06-26T14:11:46+00:00" + }, { "name": "vlucas/phpdotenv", "version": "v5.6.2", @@ -9026,6 +9535,54 @@ ], "time": "2025-06-23T06:07:21+00:00" }, + { + "name": "doctrine/deprecations", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" + }, + "time": "2025-04-07T20:06:18+00:00" + }, { "name": "fakerphp/faker", "version": "v1.24.1", diff --git a/public/fonts/filament/filament/inter/index.css b/public/fonts/filament/filament/inter/index.css new file mode 100644 index 0000000..425213e --- /dev/null +++ b/public/fonts/filament/filament/inter/index.css @@ -0,0 +1 @@ +@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./inter-cyrillic-ext-wght-normal-IYF56FF6.woff2") format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./inter-cyrillic-wght-normal-JEOLYBOO.woff2") format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./inter-greek-ext-wght-normal-EOVOK2B5.woff2") format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./inter-greek-wght-normal-IRE366VL.woff2") format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./inter-vietnamese-wght-normal-CE5GGD3W.woff2") format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./inter-latin-ext-wght-normal-HA22NDSG.woff2") format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./inter-latin-wght-normal-NRMW37G5.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD} diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-ASVAGXXE.woff2 b/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-ASVAGXXE.woff2 new file mode 100644 index 0000000..0ba164b Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-ASVAGXXE.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 b/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 new file mode 100644 index 0000000..de83a9c Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-XKHXBTUO.woff2 b/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-XKHXBTUO.woff2 new file mode 100644 index 0000000..a61a0be Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-XKHXBTUO.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-EWLSKVKN.woff2 b/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-EWLSKVKN.woff2 new file mode 100644 index 0000000..83a6f10 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-EWLSKVKN.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-JEOLYBOO.woff2 b/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-JEOLYBOO.woff2 new file mode 100644 index 0000000..d750914 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-JEOLYBOO.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-R5CMSONN.woff2 b/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-R5CMSONN.woff2 new file mode 100644 index 0000000..b655a43 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-R5CMSONN.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-7GGTF7EK.woff2 b/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-7GGTF7EK.woff2 new file mode 100644 index 0000000..cf56a71 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-7GGTF7EK.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-EOVOK2B5.woff2 b/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-EOVOK2B5.woff2 new file mode 100644 index 0000000..6e7141f Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-EOVOK2B5.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-ZEVLMORV.woff2 b/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-ZEVLMORV.woff2 new file mode 100644 index 0000000..9117b5b Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-ZEVLMORV.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-greek-wght-normal-AXVTPQD5.woff2 b/public/fonts/filament/filament/inter/inter-greek-wght-normal-AXVTPQD5.woff2 new file mode 100644 index 0000000..eb38b38 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-greek-wght-normal-AXVTPQD5.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-greek-wght-normal-IRE366VL.woff2 b/public/fonts/filament/filament/inter/inter-greek-wght-normal-IRE366VL.woff2 new file mode 100644 index 0000000..024f077 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-greek-wght-normal-IRE366VL.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-greek-wght-normal-N43DBLU2.woff2 b/public/fonts/filament/filament/inter/inter-greek-wght-normal-N43DBLU2.woff2 new file mode 100644 index 0000000..907b4a4 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-greek-wght-normal-N43DBLU2.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-5SRY4DMZ.woff2 b/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-5SRY4DMZ.woff2 new file mode 100644 index 0000000..887153b Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-5SRY4DMZ.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-GZCIV3NH.woff2 b/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-GZCIV3NH.woff2 new file mode 100644 index 0000000..3df865d Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-GZCIV3NH.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-HA22NDSG.woff2 b/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-HA22NDSG.woff2 new file mode 100644 index 0000000..479d010 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-HA22NDSG.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-latin-wght-normal-NRMW37G5.woff2 b/public/fonts/filament/filament/inter/inter-latin-wght-normal-NRMW37G5.woff2 new file mode 100644 index 0000000..d15208d Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-latin-wght-normal-NRMW37G5.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-latin-wght-normal-O25CN4JL.woff2 b/public/fonts/filament/filament/inter/inter-latin-wght-normal-O25CN4JL.woff2 new file mode 100644 index 0000000..798d6d9 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-latin-wght-normal-O25CN4JL.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-latin-wght-normal-OPIJAQLS.woff2 b/public/fonts/filament/filament/inter/inter-latin-wght-normal-OPIJAQLS.woff2 new file mode 100644 index 0000000..4025543 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-latin-wght-normal-OPIJAQLS.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-CE5GGD3W.woff2 b/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-CE5GGD3W.woff2 new file mode 100644 index 0000000..a40c469 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-CE5GGD3W.woff2 differ diff --git a/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-TWG5UU7E.woff2 b/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-TWG5UU7E.woff2 new file mode 100644 index 0000000..ce21ca1 Binary files /dev/null and b/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-TWG5UU7E.woff2 differ