diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 229e445..0b6da74 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -2446,7 +2446,7 @@ registerArgumentsSet('routes', 'boost.browser-logs','default-livewire.update', 'livewire.upload-file','livewire.preview-file','home','docs.show','command-index', -'storage.local',); +'storage.local','storage.local.upload',); registerArgumentsSet('views', '8c026b058f5337eae33f20fdb97d2c88::command-index','8c026b058f5337eae33f20fdb97d2c88::docs-viewer','command-index','components.docs.alert','components.docs.code-block', 'components.docs.content','components.docs.footer','components.docs.header','components.docs.headings','components.docs.toc', diff --git a/_ide_helper.php b/_ide_helper.php index 301bd63..b9cb1ee 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -5,7 +5,7 @@ /** * A helper file for Laravel, to provide autocomplete information to your IDE - * Generated for Laravel 12.51.0. + * Generated for Laravel 12.53.0. * * This file should not be included in your code, only analyzed by your IDE! * @@ -431,7 +431,7 @@ public static function environmentFile() } /** - * Get the fully qualified path to the environment file. + * Get the fully-qualified path to the environment file. * * @return string * @static @@ -3299,7 +3299,7 @@ public static function bindDirective($name, $handler) * Register a handler for custom directives. * * @param string $name - * @param callable $handler + * @param ($bind is true ? \Closure : callable) $handler * @param bool $bind * @return void * @throws \InvalidArgumentException @@ -4593,7 +4593,7 @@ public static function setApplication($app) /** * Determine if an item exists in the cache. * - * @param \BackedEnum|\UnitEnum|array|string $key + * @param \UnitEnum|array|string $key * @return bool * @static */ @@ -4606,7 +4606,7 @@ public static function has($key) /** * Determine if an item doesn't exist in the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @return bool * @static */ @@ -4619,7 +4619,7 @@ public static function missing($key) /** * Retrieve an item from the cache by key. * - * @param \BackedEnum|\UnitEnum|array|string $key + * @param \UnitEnum|array|string $key * @param mixed $default * @return mixed * @static @@ -4666,7 +4666,7 @@ public static function getMultiple($keys, $default = null) /** * Retrieve an item from the cache and delete it. * - * @param \BackedEnum|\UnitEnum|array|string $key + * @param \UnitEnum|array|string $key * @param mixed $default * @return mixed * @static @@ -4680,7 +4680,7 @@ public static function pull($key, $default = null) /** * Retrieve a string item from the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param (\Closure():(string|null))|string|null $default * @return string * @throws \InvalidArgumentException @@ -4695,7 +4695,7 @@ public static function string($key, $default = null) /** * Retrieve an integer item from the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param (\Closure():(int|null))|int|null $default * @return int * @throws \InvalidArgumentException @@ -4710,7 +4710,7 @@ public static function integer($key, $default = null) /** * Retrieve a float item from the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param (\Closure():(float|null))|float|null $default * @return float * @throws \InvalidArgumentException @@ -4725,7 +4725,7 @@ public static function float($key, $default = null) /** * Retrieve a boolean item from the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param (\Closure():(bool|null))|bool|null $default * @return bool * @throws \InvalidArgumentException @@ -4740,7 +4740,7 @@ public static function boolean($key, $default = null) /** * Retrieve an array item from the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param (\Closure():(array|null))|array|null $default * @return array * @throws \InvalidArgumentException @@ -4755,7 +4755,7 @@ public static function array($key, $default = null) /** * Store an item in the cache. * - * @param \BackedEnum|\UnitEnum|array|string $key + * @param \UnitEnum|array|string $key * @param mixed $value * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool @@ -4770,7 +4770,7 @@ public static function put($key, $value, $ttl = null) /** * Store an item in the cache. * - * @param \BackedEnum|\UnitEnum|array|string $key + * @param \UnitEnum|array|string $key * @param mixed $value * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool @@ -4819,7 +4819,7 @@ public static function setMultiple($values, $ttl = null) /** * Store an item in the cache if the key does not exist. * - * @param \BackedEnum|\UnitEnum|array|string $key + * @param \UnitEnum|array|string $key * @param mixed $value * @param \DateTimeInterface|\DateInterval|int|null $ttl * @return bool @@ -4834,7 +4834,7 @@ public static function add($key, $value, $ttl = null) /** * Increment the value of an item in the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $value * @return int|bool * @static @@ -4848,7 +4848,7 @@ public static function increment($key, $value = 1) /** * Decrement the value of an item in the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $value * @return int|bool * @static @@ -4862,7 +4862,7 @@ public static function decrement($key, $value = 1) /** * Store an item in the cache indefinitely. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $value * @return bool * @static @@ -4877,7 +4877,7 @@ public static function forever($key, $value) * Get an item from the cache, or execute the given Closure and store the result. * * @template TCacheValue - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param \Closure|\DateTimeInterface|\DateInterval|int|null $ttl * @param \Closure(): TCacheValue $callback * @return TCacheValue @@ -4893,7 +4893,7 @@ public static function remember($key, $ttl, $callback) * Get an item from the cache, or execute the given Closure and store the result forever. * * @template TCacheValue - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param \Closure(): TCacheValue $callback * @return TCacheValue * @static @@ -4908,7 +4908,7 @@ public static function sear($key, $callback) * Get an item from the cache, or execute the given Closure and store the result forever. * * @template TCacheValue - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param \Closure(): TCacheValue $callback * @return TCacheValue * @static @@ -4923,7 +4923,7 @@ public static function rememberForever($key, $callback) * Retrieve an item from the cache by key, refreshing it in the background if it is stale. * * @template TCacheValue - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param array{ 0: \DateTimeInterface|\DateInterval|int, 1: \DateTimeInterface|\DateInterval|int } $ttl * @param (callable(): TCacheValue) $callback * @param array{ seconds?: int, owner?: string }|null $lock @@ -4941,7 +4941,7 @@ public static function flexible($key, $ttl, $callback, $lock = null, $alwaysDefe * Execute a callback while holding an atomic lock on a cache mutex to prevent overlapping calls. * * @template TReturn - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param callable(): TReturn $callback * @param int $lockFor * @param int $waitFor @@ -4956,10 +4956,23 @@ public static function withoutOverlapping($key, $callback, $lockFor = 0, $waitFo return $instance->withoutOverlapping($key, $callback, $lockFor, $waitFor, $owner); } + /** + * Funnel a callback for a maximum number of simultaneous executions. + * + * @param \UnitEnum|string $name + * @return \Illuminate\Cache\Limiters\ConcurrencyLimiterBuilder + * @static + */ + public static function funnel($name) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->funnel($name); + } + /** * Remove an item from the cache. * - * @param \BackedEnum|\UnitEnum|array|string $key + * @param \UnitEnum|array|string $key * @return bool * @static */ @@ -4972,7 +4985,7 @@ public static function forget($key) /** * Remove an item from the cache. * - * @param \BackedEnum|\UnitEnum|array|string $key + * @param \UnitEnum|array|string $key * @return bool * @static */ @@ -5128,7 +5141,7 @@ public static function setEventDispatcher($events) /** * Determine if a cached value exists. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @return bool * @static */ @@ -5141,7 +5154,7 @@ public static function offsetExists($key) /** * Retrieve an item from the cache by key. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @return mixed * @static */ @@ -5154,7 +5167,7 @@ public static function offsetGet($key) /** * Store an item in the cache for the default time. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $value * @return void * @static @@ -5168,7 +5181,7 @@ public static function offsetSet($key, $value) /** * Remove an item from the cache. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @return void * @static */ @@ -8667,7 +8680,7 @@ public static function setQueueResolver($resolver) /** * Set the database transaction manager resolver implementation. * - * @param (callable(): \Illuminate\Database\DatabaseTransactionsManager|null) $resolver + * @param (callable(): (\Illuminate\Database\DatabaseTransactionsManager|null)) $resolver * @return \Illuminate\Events\Dispatcher * @static */ @@ -13648,7 +13661,7 @@ class RateLimiter { /** * Register a named limiter configuration. * - * @param \BackedEnum|\UnitEnum|string $name + * @param \UnitEnum|string $name * @param \Closure $callback * @return \Illuminate\Cache\RateLimiter * @static @@ -13662,7 +13675,7 @@ public static function for($name, $callback) /** * Get the given named rate limiter. * - * @param \BackedEnum|\UnitEnum|string $name + * @param \UnitEnum|string $name * @return \Closure|null * @static */ @@ -14586,6 +14599,7 @@ public static function hasSession($skipIfUninitialized = false) /** * Gets the Session. * + * @throws \Symfony\Component\HttpFoundation\Exception\SessionNotFoundException * @throws SessionNotFoundException When session is not set properly * @static */ @@ -19405,7 +19419,7 @@ public static function except($keys) /** * Checks if a key exists. * - * @param \BackedEnum|\UnitEnum|string|array $key + * @param \UnitEnum|string|array $key * @return bool * @static */ @@ -19418,7 +19432,7 @@ public static function exists($key) /** * Determine if the given key is missing from the session data. * - * @param \BackedEnum|\UnitEnum|string|array $key + * @param \UnitEnum|string|array $key * @return bool * @static */ @@ -19431,7 +19445,7 @@ public static function missing($key) /** * Determine if a key is present and not null. * - * @param \BackedEnum|\UnitEnum|string|array $key + * @param \UnitEnum|string|array $key * @return bool * @static */ @@ -19444,7 +19458,7 @@ public static function has($key) /** * Determine if any of the given keys are present and not null. * - * @param \BackedEnum|\UnitEnum|string|array $key + * @param \UnitEnum|string|array $key * @return bool * @static */ @@ -19457,7 +19471,7 @@ public static function hasAny($key) /** * Get an item from the session. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $default * @return mixed * @static @@ -19471,7 +19485,7 @@ public static function get($key, $default = null) /** * Get the value of a given key and then forget it. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $default * @return mixed * @static @@ -19525,7 +19539,7 @@ public static function replace($attributes) /** * Put a key / value pair or array of key / value pairs in the session. * - * @param \BackedEnum|\UnitEnum|string|array $key + * @param \UnitEnum|string|array $key * @param mixed $value * @return void * @static @@ -19539,7 +19553,7 @@ public static function put($key, $value = null) /** * Get an item from the session, or store the default value. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param \Closure $callback * @return mixed * @static @@ -19553,7 +19567,7 @@ public static function remember($key, $callback) /** * Push a value onto a session array. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $value * @return void * @static @@ -19567,7 +19581,7 @@ public static function push($key, $value) /** * Increment the value of an item in the session. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param int $amount * @return mixed * @static @@ -19581,7 +19595,7 @@ public static function increment($key, $amount = 1) /** * Decrement the value of an item in the session. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param int $amount * @return int * @static @@ -19595,7 +19609,7 @@ public static function decrement($key, $amount = 1) /** * Flash a key / value pair to the session. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $value * @return void * @static @@ -19609,7 +19623,7 @@ public static function flash($key, $value = true) /** * Flash a key / value pair to the session for immediate use. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @param mixed $value * @return void * @static @@ -19673,7 +19687,7 @@ public static function cache() /** * Remove an item from the session, returning its value. * - * @param \BackedEnum|\UnitEnum|string $key + * @param \UnitEnum|string $key * @return mixed * @static */ @@ -19686,7 +19700,7 @@ public static function remove($key) /** * Remove one or many items from the session. * - * @param \BackedEnum|\UnitEnum|string|array $keys + * @param \UnitEnum|string|array $keys * @return void * @static */ @@ -20291,6 +20305,18 @@ public static function providesTemporaryUrls() return $instance->providesTemporaryUrls(); } + /** + * Determine if temporary upload URLs can be generated. + * + * @return bool + * @static + */ + public static function providesTemporaryUploadUrls() + { + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + return $instance->providesTemporaryUploadUrls(); + } + /** * Get a temporary URL for the file at the given path. * @@ -20306,6 +20332,21 @@ public static function temporaryUrl($path, $expiration, $options = []) return $instance->temporaryUrl($path, $expiration, $options); } + /** + * Get a temporary upload URL for the file at the given path. + * + * @param string $path + * @param \DateTimeInterface $expiration + * @param array $options + * @return array + * @static + */ + public static function temporaryUploadUrl($path, $expiration, $options = []) + { + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + return $instance->temporaryUploadUrl($path, $expiration, $options); + } + /** * Specify the name of the disk the adapter is managing. * @@ -20860,23 +20901,6 @@ public static function url($path) return $instance->url($path); } - /** - * Get a temporary upload URL for the file at the given path. - * - * @param string $path - * @param \DateTimeInterface $expiration - * @param array $options - * @return array - * @throws \RuntimeException - * @static - */ - public static function temporaryUploadUrl($path, $expiration, $options = []) - { - //Method inherited from \Illuminate\Filesystem\FilesystemAdapter - /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ - return $instance->temporaryUploadUrl($path, $expiration, $options); - } - /** * Get an array of all files in a directory. * @@ -21030,6 +21054,20 @@ public static function buildTemporaryUrlsUsing($callback) $instance->buildTemporaryUrlsUsing($callback); } + /** + * Define a custom temporary upload URL builder callback. + * + * @param \Closure $callback + * @return void + * @static + */ + public static function buildTemporaryUploadUrlsUsing($callback) + { + //Method inherited from \Illuminate\Filesystem\FilesystemAdapter + /** @var \Illuminate\Filesystem\LocalFilesystemAdapter $instance */ + $instance->buildTemporaryUploadUrlsUsing($callback); + } + /** * Register a custom macro. * @@ -26333,7 +26371,7 @@ public static function selectSub($query, $as) /** * Add a select expression to the query. * - * @param \Illuminate\Contracts\Database\Query\Expression $expression + * @param \Illuminate\Contracts\Database\Query\Expression|string $expression * @param string $as * @return \Illuminate\Database\Eloquent\Builder * @static @@ -26888,6 +26926,35 @@ public static function orWhereNotLike($column, $value, $caseSensitive = false) return $instance->orWhereNotLike($column, $value, $caseSensitive); } + /** + * Add a "where null safe equals" clause to the query. + * + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function whereNullSafeEquals($column, $value, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNullSafeEquals($column, $value, $boolean); + } + + /** + * Add an "or where null safe equals" clause to the query. + * + * @param \Illuminate\Contracts\Database\Query\Expression|string $column + * @param mixed $value + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function orWhereNullSafeEquals($column, $value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNullSafeEquals($column, $value); + } + /** * Add a "where in" clause to the query. * diff --git a/app/Console/Commands/DocsClearCommand.php b/app/Console/Commands/DocsClearCommand.php index 5ce259e..aab3248 100644 --- a/app/Console/Commands/DocsClearCommand.php +++ b/app/Console/Commands/DocsClearCommand.php @@ -9,8 +9,10 @@ final class DocsClearCommand extends Command { + #[\Override] protected $signature = 'docs:clear'; + #[\Override] protected $description = 'Clear docs output files'; public function handle(DocsOutputCacheService $docsOutput): int diff --git a/app/Models/User.php b/app/Models/User.php index 2c2f4f2..5094e73 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -17,6 +17,7 @@ class User extends Authenticatable * * @var list */ + #[\Override] protected $fillable = [ 'name', 'email', @@ -28,6 +29,7 @@ class User extends Authenticatable * * @var list */ + #[\Override] protected $hidden = [ 'password', 'remember_token', diff --git a/composer.lock b/composer.lock index 03ba171..4e76b71 100644 --- a/composer.lock +++ b/composer.lock @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.369.34", + "version": "3.371.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "5db21cd0e5c8a5b5344596649033acf861a5e117" + "reference": "80bafcdc7f22362e204f49c5adfea66e85939cc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5db21cd0e5c8a5b5344596649033acf861a5e117", - "reference": "5db21cd0e5c8a5b5344596649033acf861a5e117", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/80bafcdc7f22362e204f49c5adfea66e85939cc8", + "reference": "80bafcdc7f22362e204f49c5adfea66e85939cc8", "shasum": "" }, "require": { @@ -153,9 +153,9 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.369.34" + "source": "https://github.com/aws/aws-sdk-php/tree/3.371.0" }, - "time": "2026-02-13T19:09:12+00:00" + "time": "2026-02-24T19:08:17+00:00" }, { "name": "brick/math", @@ -1413,16 +1413,16 @@ }, { "name": "laravel/framework", - "version": "v12.51.0", + "version": "v12.53.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "ce4de3feb211e47c4f959d309ccf8a2733b1bc16" + "reference": "f57f035c0d34503d9ff30be76159bb35a003cd1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/ce4de3feb211e47c4f959d309ccf8a2733b1bc16", - "reference": "ce4de3feb211e47c4f959d309ccf8a2733b1bc16", + "url": "https://api.github.com/repos/laravel/framework/zipball/f57f035c0d34503d9ff30be76159bb35a003cd1f", + "reference": "f57f035c0d34503d9ff30be76159bb35a003cd1f", "shasum": "" }, "require": { @@ -1631,7 +1631,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2026-02-10T18:20:19+00:00" + "time": "2026-02-24T14:35:15+00:00" }, { "name": "laravel/prompts", @@ -1694,16 +1694,16 @@ }, { "name": "laravel/serializable-closure", - "version": "v2.0.9", + "version": "v2.0.10", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "8f631589ab07b7b52fead814965f5a800459cb3e" + "reference": "870fc81d2f879903dfc5b60bf8a0f94a1609e669" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/8f631589ab07b7b52fead814965f5a800459cb3e", - "reference": "8f631589ab07b7b52fead814965f5a800459cb3e", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/870fc81d2f879903dfc5b60bf8a0f94a1609e669", + "reference": "870fc81d2f879903dfc5b60bf8a0f94a1609e669", "shasum": "" }, "require": { @@ -1751,7 +1751,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2026-02-03T06:55:34+00:00" + "time": "2026-02-20T19:59:49+00:00" }, { "name": "laravel/tinker", @@ -2380,29 +2380,29 @@ }, { "name": "livewire/flux", - "version": "v2.12.0", + "version": "v2.12.2", "source": { "type": "git", "url": "https://github.com/livewire/flux.git", - "reference": "78bc26f54a29c28ff916751b9f796f4ce1592003" + "reference": "68a3b06b62b23bae82e02d6be39722cf2a8770ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/flux/zipball/78bc26f54a29c28ff916751b9f796f4ce1592003", - "reference": "78bc26f54a29c28ff916751b9f796f4ce1592003", + "url": "https://api.github.com/repos/livewire/flux/zipball/68a3b06b62b23bae82e02d6be39722cf2a8770ff", + "reference": "68a3b06b62b23bae82e02d6be39722cf2a8770ff", "shasum": "" }, "require": { - "illuminate/console": "^10.0|^11.0|^12.0", - "illuminate/support": "^10.0|^11.0|^12.0", - "illuminate/view": "^10.0|^11.0|^12.0", + "illuminate/console": "^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^10.0|^11.0|^12.0|^13.0", + "illuminate/view": "^10.0|^11.0|^12.0|^13.0", "laravel/prompts": "^0.1|^0.2|^0.3", "livewire/livewire": "^3.7.4|^4.0", "php": "^8.1", - "symfony/console": "^6.0|^7.0" + "symfony/console": "^6.0|^7.0|^8.0" }, "conflict": { - "livewire/blaze": "<1.0.0" + "livewire/blaze": "<1.0.0-beta.2" }, "type": "library", "extra": { @@ -2440,32 +2440,32 @@ ], "support": { "issues": "https://github.com/livewire/flux/issues", - "source": "https://github.com/livewire/flux/tree/v2.12.0" + "source": "https://github.com/livewire/flux/tree/v2.12.2" }, - "time": "2026-02-09T23:35:27+00:00" + "time": "2026-02-24T16:29:56+00:00" }, { "name": "livewire/flux-pro", - "version": "2.12.0", + "version": "2.12.2", "dist": { "type": "zip", - "url": "https://composer.fluxui.dev/download/a10af361-cb0b-48fd-8bc5-5fb4dda59618/flux-pro-2.12.0.zip", - "reference": "15e43b7d8f96914195432b18b7b64b3e30a96288", - "shasum": "42d5b2f496b6b126d3e26186d355c6c9a92623e1" + "url": "https://composer.fluxui.dev/download/a129da01-0b6c-4769-9430-e9156c8da2ba/flux-pro-2.12.2.zip", + "reference": "f2fdc138527e51f628d296199e8f9241cbdcd645", + "shasum": "2b7c84785b253a90522fae68d962f61c53259cb7" }, "require": { - "illuminate/console": "^10.0|^11.0|^12.0", - "illuminate/support": "^10.0|^11.0|^12.0", - "illuminate/view": "^10.0|^11.0|^12.0", + "illuminate/console": "^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^10.0|^11.0|^12.0|^13.0", + "illuminate/view": "^10.0|^11.0|^12.0|^13.0", "laravel/prompts": "^0.1.24|^0.2|^0.3", - "livewire/flux": "2.12.0|dev-main", + "livewire/flux": "2.12.2|dev-main", "livewire/livewire": "^3.7.4|^4.0", "php": "^8.1", - "symfony/console": "^6.0|^7.0" + "symfony/console": "^6.0|^7.0|^8.0" }, "require-dev": { "livewire/volt": "*", - "orchestra/testbench": "^10.8" + "orchestra/testbench": "^10.8|^11.0" }, "type": "library", "extra": { @@ -2515,7 +2515,7 @@ "livewire", "ui" ], - "time": "2026-02-10T00:40:52+00:00" + "time": "2026-02-25T09:20:33+00:00" }, { "name": "livewire/livewire", @@ -2599,16 +2599,16 @@ "source": { "type": "git", "url": "https://github.com/loadinglucian/deployer-php.git", - "reference": "555f41ff65c63c526dc8ed1691f01f80f131528f" + "reference": "75a1f84c6ee154b0d8e65a47460e04d94f2c51a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/loadinglucian/deployer-php/zipball/555f41ff65c63c526dc8ed1691f01f80f131528f", - "reference": "555f41ff65c63c526dc8ed1691f01f80f131528f", + "url": "https://api.github.com/repos/loadinglucian/deployer-php/zipball/75a1f84c6ee154b0d8e65a47460e04d94f2c51a8", + "reference": "75a1f84c6ee154b0d8e65a47460e04d94f2c51a8", "shasum": "" }, "require": { - "aws/aws-sdk-php": "^3.369", + "aws/aws-sdk-php": "^3.371", "ext-pcntl": "*", "guzzlehttp/guzzle": "^7.10", "jeremykendall/php-domain-parser": "^6.4", @@ -2645,7 +2645,7 @@ "authors": [ { "name": "Lucian Văcăroiu", - "email": "lucian@bigpixelrocket.com" + "email": "silviulucian@gmail.com" } ], "description": "Server and site deployment tool for PHP", @@ -2659,7 +2659,7 @@ "issues": "https://github.com/loadinglucian/deployer-php/issues", "source": "https://github.com/loadinglucian/deployer-php/tree/main" }, - "time": "2026-02-15T12:05:19+00:00" + "time": "2026-02-25T10:49:09+00:00" }, { "name": "monolog/monolog", @@ -2937,16 +2937,16 @@ }, { "name": "nette/schema", - "version": "v1.3.4", + "version": "v1.3.5", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7" + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/086497a2f34b82fede9b5a41cc8e131d087cd8f7", - "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7", + "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002", "shasum": "" }, "require": { @@ -2954,8 +2954,10 @@ "php": "8.1 - 8.5" }, "require-dev": { + "nette/phpstan-rules": "^1.0", "nette/tester": "^2.6", - "phpstan/phpstan": "^2.0@stable", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.39@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -2996,9 +2998,9 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.4" + "source": "https://github.com/nette/schema/tree/v1.3.5" }, - "time": "2026-02-08T02:54:00+00:00" + "time": "2026-02-23T03:47:12+00:00" }, { "name": "nette/utils", @@ -3151,31 +3153,31 @@ }, { "name": "nunomaduro/termwind", - "version": "v2.3.3", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017" + "reference": "712a31b768f5daea284c2169a7d227031001b9a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017", - "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/712a31b768f5daea284c2169a7d227031001b9a8", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.3.6" + "symfony/console": "^7.4.4 || ^8.0.4" }, "require-dev": { - "illuminate/console": "^11.46.1", - "laravel/pint": "^1.25.1", + "illuminate/console": "^11.47.0", + "laravel/pint": "^1.27.1", "mockery/mockery": "^1.6.12", - "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.3.2", "phpstan/phpstan": "^1.12.32", "phpstan/phpstan-strict-rules": "^1.6.2", - "symfony/var-dumper": "^7.3.5", + "symfony/var-dumper": "^7.3.5 || ^8.0.4", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -3207,7 +3209,7 @@ "email": "enunomaduro@gmail.com" } ], - "description": "Its like Tailwind CSS, but for the console.", + "description": "It's like Tailwind CSS, but for the console.", "keywords": [ "cli", "console", @@ -3218,7 +3220,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3" + "source": "https://github.com/nunomaduro/termwind/tree/v2.4.0" }, "funding": [ { @@ -3234,7 +3236,7 @@ "type": "github" } ], - "time": "2025-11-20T02:34:59+00:00" + "time": "2026-02-16T23:10:27+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -4931,29 +4933,29 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.92.7", + "version": "1.93.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "f09a799850b1ed765103a4f0b4355006360c49a5" + "reference": "0d097bce95b2bf6802fb1d83e1e753b0f5a948e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/f09a799850b1ed765103a4f0b4355006360c49a5", - "reference": "f09a799850b1ed765103a4f0b4355006360c49a5", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/0d097bce95b2bf6802fb1d83e1e753b0f5a948e7", + "reference": "0d097bce95b2bf6802fb1d83e1e753b0f5a948e7", "shasum": "" }, "require": { - "illuminate/contracts": "^9.28|^10.0|^11.0|^12.0", - "php": "^8.0" + "illuminate/contracts": "^10.0|^11.0|^12.0|^13.0", + "php": "^8.1" }, "require-dev": { "mockery/mockery": "^1.5", - "orchestra/testbench": "^7.7|^8.0|^9.0|^10.0", - "pestphp/pest": "^1.23|^2.1|^3.1", - "phpunit/php-code-coverage": "^9.0|^10.0|^11.0", - "phpunit/phpunit": "^9.5.24|^10.5|^11.5", - "spatie/pest-plugin-test-time": "^1.1|^2.2" + "orchestra/testbench": "^8.0|^9.2|^10.0|^11.0", + "pestphp/pest": "^2.1|^3.1|^4.0", + "phpunit/php-code-coverage": "^10.0|^11.0|^12.0", + "phpunit/phpunit": "^10.5|^11.5|^12.5", + "spatie/pest-plugin-test-time": "^2.2|^3.0" }, "type": "library", "autoload": { @@ -4980,7 +4982,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.7" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.93.0" }, "funding": [ { @@ -4988,33 +4990,33 @@ "type": "github" } ], - "time": "2025-07-17T15:46:43+00:00" + "time": "2026-02-21T12:49:54+00:00" }, { "name": "spatie/php-structure-discoverer", - "version": "2.3.3", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/spatie/php-structure-discoverer.git", - "reference": "552a5b974a9853a32e5677a66e85ae615a96a90b" + "reference": "9a53c79b48fca8b6d15faa8cbba47cc430355146" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/php-structure-discoverer/zipball/552a5b974a9853a32e5677a66e85ae615a96a90b", - "reference": "552a5b974a9853a32e5677a66e85ae615a96a90b", + "url": "https://api.github.com/repos/spatie/php-structure-discoverer/zipball/9a53c79b48fca8b6d15faa8cbba47cc430355146", + "reference": "9a53c79b48fca8b6d15faa8cbba47cc430355146", "shasum": "" }, "require": { - "illuminate/collections": "^11.0|^12.0", + "illuminate/collections": "^11.0|^12.0|^13.0", "php": "^8.3", "spatie/laravel-package-tools": "^1.92.7", "symfony/finder": "^6.0|^7.3.5|^8.0" }, "require-dev": { "amphp/parallel": "^2.3.2", - "illuminate/console": "^11.0|^12.0", + "illuminate/console": "^11.0|^12.0|^13.0", "nunomaduro/collision": "^7.0|^8.8.3", - "orchestra/testbench": "^9.5|^10.8", + "orchestra/testbench": "^9.5|^10.8|^11.0", "pestphp/pest": "^3.8|^4.0", "pestphp/pest-plugin-laravel": "^3.2|^4.0", "phpstan/extension-installer": "^1.4.3", @@ -5059,7 +5061,7 @@ ], "support": { "issues": "https://github.com/spatie/php-structure-discoverer/issues", - "source": "https://github.com/spatie/php-structure-discoverer/tree/2.3.3" + "source": "https://github.com/spatie/php-structure-discoverer/tree/2.4.0" }, "funding": [ { @@ -5067,7 +5069,7 @@ "type": "github" } ], - "time": "2025-11-24T16:41:01+00:00" + "time": "2026-02-21T15:57:15+00:00" }, { "name": "symfony/clock", @@ -8418,16 +8420,16 @@ }, { "name": "brianium/paratest", - "version": "v7.17.0", + "version": "v7.19.0", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "53cb90a6aa3ef3840458781600628ade058a18b9" + "reference": "7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/53cb90a6aa3ef3840458781600628ade058a18b9", - "reference": "53cb90a6aa3ef3840458781600628ade058a18b9", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6", + "reference": "7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6", "shasum": "" }, "require": { @@ -8438,13 +8440,13 @@ "fidry/cpu-core-counter": "^1.3.0", "jean85/pretty-package-versions": "^2.1.1", "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "phpunit/php-code-coverage": "^12.5.2", - "phpunit/php-file-iterator": "^6", - "phpunit/php-timer": "^8", - "phpunit/phpunit": "^12.5.8", - "sebastian/environment": "^8.0.3", - "symfony/console": "^7.3.4 || ^8.0.0", - "symfony/process": "^7.3.4 || ^8.0.0" + "phpunit/php-code-coverage": "^12.5.3 || ^13.0.1", + "phpunit/php-file-iterator": "^6.0.1 || ^7", + "phpunit/php-timer": "^8 || ^9", + "phpunit/phpunit": "^12.5.9 || ^13", + "sebastian/environment": "^8.0.3 || ^9", + "symfony/console": "^7.4.4 || ^8.0.4", + "symfony/process": "^7.4.5 || ^8.0.5" }, "require-dev": { "doctrine/coding-standard": "^14.0.0", @@ -8455,7 +8457,7 @@ "phpstan/phpstan-deprecation-rules": "^2.0.3", "phpstan/phpstan-phpunit": "^2.0.12", "phpstan/phpstan-strict-rules": "^2.0.8", - "symfony/filesystem": "^7.3.2 || ^8.0.0" + "symfony/filesystem": "^7.4.0 || ^8.0.1" }, "bin": [ "bin/paratest", @@ -8495,7 +8497,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.17.0" + "source": "https://github.com/paratestphp/paratest/tree/v7.19.0" }, "funding": [ { @@ -8507,7 +8509,7 @@ "type": "paypal" } ], - "time": "2026-02-05T09:14:44+00:00" + "time": "2026-02-06T10:53:26+00:00" }, { "name": "composer/class-map-generator", @@ -9708,39 +9710,36 @@ }, { "name": "nunomaduro/collision", - "version": "v8.8.3", + "version": "v8.9.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4" + "reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4", - "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/a1ed3fa530fd60bc515f9303e8520fcb7d4bd935", + "reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935", "shasum": "" }, "require": { - "filp/whoops": "^2.18.1", - "nunomaduro/termwind": "^2.3.1", + "filp/whoops": "^2.18.4", + "nunomaduro/termwind": "^2.4.0", "php": "^8.2.0", - "symfony/console": "^7.3.0" + "symfony/console": "^7.4.4 || ^8.0.4" }, "conflict": { - "laravel/framework": "<11.44.2 || >=13.0.0", - "phpunit/phpunit": "<11.5.15 || >=13.0.0" + "laravel/framework": "<11.48.0 || >=14.0.0", + "phpunit/phpunit": "<11.5.50 || >=14.0.0" }, "require-dev": { - "brianium/paratest": "^7.8.3", - "larastan/larastan": "^3.4.2", - "laravel/framework": "^11.44.2 || ^12.18", - "laravel/pint": "^1.22.1", - "laravel/sail": "^1.43.1", - "laravel/sanctum": "^4.1.1", - "laravel/tinker": "^2.10.1", - "orchestra/testbench-core": "^9.12.0 || ^10.4", - "pestphp/pest": "^3.8.2 || ^4.0.0", - "sebastian/environment": "^7.2.1 || ^8.0" + "brianium/paratest": "^7.8.5", + "larastan/larastan": "^3.9.2", + "laravel/framework": "^11.48.0 || ^12.52.0", + "laravel/pint": "^1.27.1", + "orchestra/testbench-core": "^9.12.0 || ^10.9.0", + "pestphp/pest": "^3.8.5 || ^4.4.1 || ^5.0.0", + "sebastian/environment": "^7.2.1 || ^8.0.3 || ^9.0.0" }, "type": "library", "extra": { @@ -9803,45 +9802,45 @@ "type": "patreon" } ], - "time": "2025-11-20T02:55:25+00:00" + "time": "2026-02-17T17:33:08+00:00" }, { "name": "pestphp/pest", - "version": "v4.3.2", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "3a4329ddc7a2b67c19fca8342a668b39be3ae398" + "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/3a4329ddc7a2b67c19fca8342a668b39be3ae398", - "reference": "3a4329ddc7a2b67c19fca8342a668b39be3ae398", + "url": "https://api.github.com/repos/pestphp/pest/zipball/f96a1b27864b585b0b29b0ee7331176726f7e54a", + "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a", "shasum": "" }, "require": { - "brianium/paratest": "^7.16.1", - "nunomaduro/collision": "^8.8.3", - "nunomaduro/termwind": "^2.3.3", + "brianium/paratest": "^7.19.0", + "nunomaduro/collision": "^8.9.0", + "nunomaduro/termwind": "^2.4.0", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.2.1", "php": "^8.3.0", - "phpunit/phpunit": "^12.5.8", - "symfony/process": "^7.4.4|^8.0.0" + "phpunit/phpunit": "^12.5.12", + "symfony/process": "^7.4.5|^8.0.5" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.5.8", + "phpunit/phpunit": ">12.5.12", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, "require-dev": { - "pestphp/pest-dev-tools": "^4.0.0", - "pestphp/pest-plugin-browser": "^4.2.1", + "pestphp/pest-dev-tools": "^4.1.0", + "pestphp/pest-plugin-browser": "^4.3.0", "pestphp/pest-plugin-type-coverage": "^4.0.3", - "psy/psysh": "^0.12.18" + "psy/psysh": "^0.12.20" }, "bin": [ "bin/pest" @@ -9907,7 +9906,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v4.3.2" + "source": "https://github.com/pestphp/pest/tree/v4.4.1" }, "funding": [ { @@ -9919,7 +9918,7 @@ "type": "github" } ], - "time": "2026-01-28T01:01:19+00:00" + "time": "2026-02-17T15:27:18+00:00" }, { "name": "pestphp/pest-plugin", @@ -10063,27 +10062,27 @@ }, { "name": "pestphp/pest-plugin-laravel", - "version": "v4.0.0", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin-laravel.git", - "reference": "e12a07046b826a40b1c8632fd7b80d6b8d7b628e" + "reference": "3057a36669ff11416cc0dc2b521b3aec58c488d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/e12a07046b826a40b1c8632fd7b80d6b8d7b628e", - "reference": "e12a07046b826a40b1c8632fd7b80d6b8d7b628e", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/3057a36669ff11416cc0dc2b521b3aec58c488d0", + "reference": "3057a36669ff11416cc0dc2b521b3aec58c488d0", "shasum": "" }, "require": { - "laravel/framework": "^11.45.2|^12.25.0", - "pestphp/pest": "^4.0.0", + "laravel/framework": "^11.45.2|^12.52.0|^13.0", + "pestphp/pest": "^4.4.1", "php": "^8.3.0" }, "require-dev": { - "laravel/dusk": "^8.3.3", - "orchestra/testbench": "^9.13.0|^10.5.0", - "pestphp/pest-dev-tools": "^4.0.0" + "laravel/dusk": "^8.3.6", + "orchestra/testbench": "^9.13.0|^10.9.0|^11.0", + "pestphp/pest-dev-tools": "^4.1.0" }, "type": "library", "extra": { @@ -10121,7 +10120,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v4.0.0" + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v4.1.0" }, "funding": [ { @@ -10133,7 +10132,7 @@ "type": "github" } ], - "time": "2025-08-20T12:46:37+00:00" + "time": "2026-02-21T00:29:45+00:00" }, { "name": "pestphp/pest-plugin-mutate", @@ -10387,11 +10386,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.39", + "version": "2.1.40", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6f73a2af4cbcd99c931d0fb8f08548cc0fa8224", - "reference": "c6f73a2af4cbcd99c931d0fb8f08548cc0fa8224", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", + "reference": "9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", "shasum": "" }, "require": { @@ -10436,7 +10435,7 @@ "type": "github" } ], - "time": "2026-02-11T14:48:56+00:00" + "time": "2026-02-23T15:04:35+00:00" }, { "name": "phpunit/php-code-coverage", @@ -10786,16 +10785,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.5.8", + "version": "12.5.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "37ddb96c14bfee10304825edbb7e66d341ec6889" + "reference": "418e06b3b46b0d54bad749ff4907fc7dfb530199" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/37ddb96c14bfee10304825edbb7e66d341ec6889", - "reference": "37ddb96c14bfee10304825edbb7e66d341ec6889", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/418e06b3b46b0d54bad749ff4907fc7dfb530199", + "reference": "418e06b3b46b0d54bad749ff4907fc7dfb530199", "shasum": "" }, "require": { @@ -10809,8 +10808,8 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.3", - "phpunit/php-code-coverage": "^12.5.2", - "phpunit/php-file-iterator": "^6.0.0", + "phpunit/php-code-coverage": "^12.5.3", + "phpunit/php-file-iterator": "^6.0.1", "phpunit/php-invoker": "^6.0.0", "phpunit/php-text-template": "^5.0.0", "phpunit/php-timer": "^8.0.0", @@ -10821,6 +10820,7 @@ "sebastian/exporter": "^7.0.2", "sebastian/global-state": "^8.0.2", "sebastian/object-enumerator": "^7.0.0", + "sebastian/recursion-context": "^7.0.1", "sebastian/type": "^6.0.3", "sebastian/version": "^6.0.0", "staabm/side-effects-detector": "^1.0.5" @@ -10863,7 +10863,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.8" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.12" }, "funding": [ { @@ -10887,20 +10887,20 @@ "type": "tidelift" } ], - "time": "2026-01-27T06:12:29+00:00" + "time": "2026-02-16T08:34:36+00:00" }, { "name": "rector/rector", - "version": "2.3.6", + "version": "2.3.8", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b" + "reference": "bbd37aedd8df749916cffa2a947cfc4714d1ba2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/ca9ebb81d280cd362ea39474dabd42679e32ca6b", - "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/bbd37aedd8df749916cffa2a947cfc4714d1ba2c", + "reference": "bbd37aedd8df749916cffa2a947cfc4714d1ba2c", "shasum": "" }, "require": { @@ -10939,7 +10939,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.3.6" + "source": "https://github.com/rectorphp/rector/tree/2.3.8" }, "funding": [ { @@ -10947,7 +10947,7 @@ "type": "github" } ], - "time": "2026-02-06T14:25:06+00:00" + "time": "2026-02-22T09:45:50+00:00" }, { "name": "roave/security-advisories", @@ -10955,12 +10955,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "7f3e95c9ebf1b16e002dd2c913d30d962c2a6a16" + "reference": "a4ad87335e09715cfde5736995bc602c8a200b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7f3e95c9ebf1b16e002dd2c913d30d962c2a6a16", - "reference": "7f3e95c9ebf1b16e002dd2c913d30d962c2a6a16", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/a4ad87335e09715cfde5736995bc602c8a200b80", + "reference": "a4ad87335e09715cfde5736995bc602c8a200b80", "shasum": "" }, "conflict": { @@ -11128,6 +11128,7 @@ "devgroup/dotplant": "<2020.09.14-dev", "digimix/wp-svg-upload": "<=1", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", + "directorytree/imapengine": "<1.22.3", "dl/yag": "<3.0.1", "dmk/webkitpdf": "<1.1.4", "dnadesign/silverstripe-elemental": "<5.3.12", @@ -11230,7 +11231,7 @@ "filegator/filegator": "<7.8", "filp/whoops": "<2.1.13", "fineuploader/php-traditional-server": "<=1.2.2", - "firebase/php-jwt": "<6", + "firebase/php-jwt": "<7", "fisharebest/webtrees": "<=2.1.18", "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", "fixpunkt/fp-newsletter": "<1.1.1|>=1.2,<2.1.2|>=2.2,<3.2.6", @@ -11268,7 +11269,7 @@ "genix/cms": "<=1.1.11", "georgringer/news": "<1.3.3", "geshi/geshi": "<=1.0.9.1", - "getformwork/formwork": "<2.2", + "getformwork/formwork": "<=2.3.3", "getgrav/grav": "<1.11.0.0-beta1", "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1|>=5,<=5.2.1", "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", @@ -11391,7 +11392,7 @@ "leantime/leantime": "<3.3", "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", "libreform/libreform": ">=2,<=2.0.8", - "librenms/librenms": "<25.12", + "librenms/librenms": "<26.2", "liftkit/database": "<2.13.2", "lightsaml/lightsaml": "<1.3.5", "limesurvey/limesurvey": "<6.5.12", @@ -11573,7 +11574,7 @@ "pimcore/demo": "<10.3", "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<=11.5.13|>=12.0.0.0-RC1-dev,<12.3.1", + "pimcore/pimcore": "<=11.5.14.1|>=12,<12.3.3", "pimcore/web2print-tools-bundle": "<=5.2.1|>=6.0.0.0-RC1-dev,<=6.1", "piwik/piwik": "<1.11", "pixelfed/pixelfed": "<0.12.5", @@ -11599,7 +11600,7 @@ "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", "psy/psysh": "<=0.11.22|>=0.12,<=0.12.18", - "pterodactyl/panel": "<1.12", + "pterodactyl/panel": "<1.12.1", "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", "ptrofimov/beanstalk_console": "<1.7.14", "pubnub/pubnub": "<6.1", @@ -11702,7 +11703,7 @@ "starcitizentools/short-description": ">=4,<4.0.1", "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2|>=3,<3.1.1", "starcitizenwiki/embedvideo": "<=4", - "statamic/cms": "<5.73.6|>=6,<6.2.5", + "statamic/cms": "<5.73.10|>=6,<6.3.3", "stormpath/sdk": "<9.9.99", "studio-42/elfinder": "<=2.1.64", "studiomitte/friendlycaptcha": "<0.1.4", @@ -11874,7 +11875,7 @@ "wpanel/wpanel4-cms": "<=4.3.1", "wpcloud/wp-stateless": "<3.2", "wpglobus/wpglobus": "<=1.9.6", - "wwbn/avideo": "<14.3", + "wwbn/avideo": "<21", "xataface/xataface": "<3", "xpressengine/xpressengine": "<3.0.15", "yab/quarx": "<2.4.5", @@ -11933,7 +11934,8 @@ "zf-commons/zfc-user": "<1.2.2", "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", "zfr/zfr-oauth2-server-module": "<0.1.2", - "zoujingli/thinkadmin": "<=6.1.53" + "zoujingli/thinkadmin": "<=6.1.53", + "zumba/json-serializer": "<3.2.3" }, "default-branch": true, "type": "metapackage", @@ -11971,7 +11973,7 @@ "type": "tidelift" } ], - "time": "2026-02-13T23:11:21+00:00" + "time": "2026-02-24T21:13:17+00:00" }, { "name": "sebastian/cli-parser", @@ -12924,23 +12926,23 @@ }, { "name": "ta-tikoma/phpunit-architecture-test", - "version": "0.8.6", + "version": "0.8.7", "source": { "type": "git", "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", - "reference": "ad48430b92901fd7d003fdaf2d7b139f96c0906e" + "reference": "1248f3f506ca9641d4f68cebcd538fa489754db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/ad48430b92901fd7d003fdaf2d7b139f96c0906e", - "reference": "ad48430b92901fd7d003fdaf2d7b139f96c0906e", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/1248f3f506ca9641d4f68cebcd538fa489754db8", + "reference": "1248f3f506ca9641d4f68cebcd538fa489754db8", "shasum": "" }, "require": { "nikic/php-parser": "^4.18.0 || ^5.0.0", "php": "^8.1.0", "phpdocumentor/reflection-docblock": "^5.3.0 || ^6.0.0", - "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0 || ^13.0.0", "symfony/finder": "^6.4.0 || ^7.0.0 || ^8.0.0" }, "require-dev": { @@ -12977,9 +12979,9 @@ ], "support": { "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", - "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.6" + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.7" }, - "time": "2026-01-30T07:16:00+00:00" + "time": "2026-02-17T17:25:14+00:00" }, { "name": "theseer/tokenizer", diff --git a/resources/css/app.css b/resources/css/app.css index 3d50187..48e5799 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -402,9 +402,14 @@ padding-left: 1.5rem; } -/* Active state: darker border + darker text */ -[data-flux-navlist] [data-flux-navlist-item][data-current], -[data-flux-navlist] [data-flux-navlist-item][data-current='true'] { +/* Passed state: headings the reader has scrolled past (progress indicator) */ +[data-flux-navlist] [data-flux-navlist-item][data-passed] { + border-left-color: #18181b; /* zinc-900 */ + color: #52525b; /* zinc-600 - softer than current */ +} + +/* Current heading: full active treatment */ +[data-flux-navlist] [data-flux-navlist-item][data-current] { border-left-color: #18181b !important; /* zinc-900 */ color: #18181b !important; /* zinc-900 */ font-weight: 500 !important; @@ -412,7 +417,7 @@ } /* Hover state for inactive items */ -[data-flux-navlist] [data-flux-navlist-item]:not([data-current]):hover { +[data-flux-navlist] [data-flux-navlist-item]:not([data-passed]):hover { color: #52525b; /* zinc-600 - gentle lift */ border-left-color: #71717a; /* zinc-500 - more visible */ background: transparent !important; @@ -428,12 +433,17 @@ color: #a1a1aa; /* zinc-400 - soft, inviting */ } +.dark [data-flux-navlist] [data-flux-navlist-item][data-passed] { + border-left-color: #fafafa; /* zinc-50 */ + color: #a1a1aa; /* zinc-400 - softer than current */ +} + .dark [data-flux-navlist] [data-flux-navlist-item][data-current] { border-left-color: #fafafa !important; /* zinc-50 */ color: #fafafa !important; /* zinc-50 */ } -.dark [data-flux-navlist] [data-flux-navlist-item]:not([data-current]):hover { +.dark [data-flux-navlist] [data-flux-navlist-item]:not([data-passed]):hover { border-left-color: #a1a1aa; /* zinc-400 - more visible */ color: #fafafa; /* zinc-50 - gentle lift */ } diff --git a/resources/js/app.js b/resources/js/app.js index a31b0c6..52535e6 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -247,6 +247,151 @@ document.addEventListener('keydown', (event) => { openDocsImageLightbox(activeElement, { restoreFocus: true }); }); +// ---- +// Scroll Spy - Right Sidebar Progress Highlighting +// ---- + +document.addEventListener('alpine:init', () => { + Alpine.data('docsScrollSpy', () => ({ + activeIndex: -1, + headingIds: [], + observer: null, + scrollListener: null, + navigatedListener: null, + + init() { + this.setup(); + + // Re-initialize after Livewire SPA navigation (new page content) + this.navigatedListener = () => { + this.teardown(); + + this.$nextTick(() => this.setup()); + }; + document.addEventListener('livewire:navigated', this.navigatedListener); + }, + + setup() { + // Collect heading IDs from sidebar anchor links (Flux renders items as tags directly) + const links = this.$root.querySelectorAll('[data-flux-navlist-item][href^="#"]'); + this.headingIds = Array.from(links).map((link) => link.getAttribute('href').slice(1)); + + if (this.headingIds.length === 0) { + return; + } + + // Track which headings have crossed into the top observation zone + const visible = new Set(); + + this.observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + visible.add(entry.target.id); + } else { + visible.delete(entry.target.id); + } + }); + + this.updateActiveFromVisible(visible); + }, + { + // Top zone: below sticky header (~80px), observe top ~30% of viewport + rootMargin: '-80px 0px -66% 0px', + }, + ); + + this.headingIds.forEach((id) => { + const el = document.getElementById(id); + if (el) { + this.observer.observe(el); + } + }); + + // Handle bottom-of-page: activate last heading when scrolled to end + this.scrollListener = () => { + const nearBottom = window.innerHeight + window.scrollY >= document.body.offsetHeight - 40; + + if (nearBottom && this.headingIds.length > 0) { + this.activeIndex = this.headingIds.length - 1; + } + }; + window.addEventListener('scroll', this.scrollListener, { passive: true }); + + // Set initial state for headings already in view + this.$nextTick(() => { + const initialVisible = new Set(); + + this.headingIds.forEach((id) => { + const el = document.getElementById(id); + if (!el) { + return; + } + + const rect = el.getBoundingClientRect(); + if (rect.top < window.innerHeight * 0.34) { + initialVisible.add(id); + } + }); + + this.updateActiveFromVisible(initialVisible); + }); + }, + + updateActiveFromVisible(visible) { + // Find the last heading (by document order) that's in the observation zone + let lastVisibleIndex = -1; + + for (let i = this.headingIds.length - 1; i >= 0; i--) { + if (visible.has(this.headingIds[i])) { + lastVisibleIndex = i; + break; + } + } + + if (lastVisibleIndex !== -1) { + this.activeIndex = lastVisibleIndex; + } else if (visible.size === 0) { + // Nothing visible in zone — find the last heading above the viewport top + for (let i = this.headingIds.length - 1; i >= 0; i--) { + const el = document.getElementById(this.headingIds[i]); + if (el && el.getBoundingClientRect().top < 100) { + this.activeIndex = i; + return; + } + } + + // Scrolled to very top — no heading active + this.activeIndex = -1; + } + }, + + teardown() { + if (this.observer) { + this.observer.disconnect(); + this.observer = null; + } + + if (this.scrollListener) { + window.removeEventListener('scroll', this.scrollListener); + this.scrollListener = null; + } + + this.activeIndex = -1; + this.headingIds = []; + }, + + destroy() { + if (this.navigatedListener) { + document.removeEventListener('livewire:navigated', this.navigatedListener); + this.navigatedListener = null; + } + + this.teardown(); + }, + })); +}); + // Use livewire:navigated for SPA compatibility (fires on initial load AND after navigation) document.addEventListener('livewire:navigated', () => { prepareDocsLightboxImages(); diff --git a/resources/views/components/docs/headings.blade.php b/resources/views/components/docs/headings.blade.php index 80781eb..a8da8c2 100644 --- a/resources/views/components/docs/headings.blade.php +++ b/resources/views/components/docs/headings.blade.php @@ -2,16 +2,20 @@ 'headings', ]) -@if (count($headings) > 1) - - - @foreach ($headings as $heading) - @if ($heading['level'] <= 3 && $heading['id']) - $heading['level'] === 3])> +@php + $filteredHeadings = array_values(array_filter($headings, fn ($h) => $h['level'] <= 3 && $h['id'])); +@endphp + +@if (count($filteredHeadings) > 1) +
+ + + @foreach ($filteredHeadings as $index => $heading) + $heading['level'] === 3])> {{ $heading['text'] }} - @endif - @endforeach - - + @endforeach + + +
@endif