diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..ddc1631 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 2d87de2..c5b19de 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,5 @@ yarn-error.log /.vscode /.zed NUL +storage/.DS_Store +.DS_Store diff --git a/.junie/.DS_Store b/.junie/.DS_Store new file mode 100644 index 0000000..ddc4528 Binary files /dev/null and b/.junie/.DS_Store differ diff --git a/AGENTS.md b/AGENTS.md index 8cc5ed2..6340406 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,7 +9,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 +- php - 8.5.0 - laravel/fortify (FORTIFY) - v1 - laravel/framework (LARAVEL) - v12 - laravel/prompts (PROMPTS) - v0 diff --git a/CLAUDE.md b/CLAUDE.md index 8cc5ed2..6340406 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,7 +9,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 +- php - 8.5.0 - laravel/fortify (FORTIFY) - v1 - laravel/framework (LARAVEL) - v12 - laravel/prompts (PROMPTS) - v0 diff --git a/app/.DS_Store b/app/.DS_Store new file mode 100644 index 0000000..c735bf9 Binary files /dev/null and b/app/.DS_Store differ diff --git a/app/Console/Commands/SyncDataCommand.php b/app/Console/Commands/SyncDataCommand.php new file mode 100644 index 0000000..bc806ef --- /dev/null +++ b/app/Console/Commands/SyncDataCommand.php @@ -0,0 +1,19 @@ +toDateTimeString()); + + return self::SUCCESS; + } +} \ No newline at end of file diff --git a/app/Jobs/SleepTest.php b/app/Jobs/SleepTest.php new file mode 100644 index 0000000..1f86a30 --- /dev/null +++ b/app/Jobs/SleepTest.php @@ -0,0 +1,29 @@ + */ - public array $wishlisted = []; - public function mount(): void { nativephp_call('UI.SetBackground', json_encode(['color' => '#FFFFFF'])); } - public function selectCategory(int $index): void - { - $this->selectedCategory = $this->selectedCategory === $index ? -1 : $index; - } - - public function toggleWishlist(int $index): void + public function increment() { - if (isset($this->wishlisted[$index])) { - unset($this->wishlisted[$index]); - } else { - $this->wishlisted[$index] = true; - } + $this->count++; } - public function viewListing(int $index): void + public function decrement() { - $this->navigate($this->route('listing.show', $index)) - ->transition(Transition::SlideFromRight); + $this->count--; } public function render(): Element { - $allListings = self::listings(); - $categories = self::categories(); - - $selectedName = ''; - if ($this->selectedCategory >= 0 && isset($categories[$this->selectedCategory])) { - $selectedName = $categories[$this->selectedCategory]['name']; - } - - $listings = $allListings; - if ($selectedName !== '') { - $listings = array_values( - array_filter($allListings, fn (array $listing): bool => $listing['category'] === $selectedName) - ); - } - - // Map back to original indices for navigation - $mappedListings = []; - foreach ($listings as $listing) { - $originalIndex = array_search($listing['title'], array_column($allListings, 'title')); - $listing['isWishlisted'] = isset($this->wishlisted[$originalIndex]); - $listing['originalIndex'] = $originalIndex; - $mappedListings[] = $listing; - } - - return $this->view('explore', [ - 'listings' => $mappedListings, - 'categories' => $categories, - ]); + return $this->view('explore'); } } diff --git a/app/NativeComponents/SkiaShowcase.php b/app/NativeComponents/SkiaShowcase.php new file mode 100644 index 0000000..aca93cc --- /dev/null +++ b/app/NativeComponents/SkiaShowcase.php @@ -0,0 +1,57 @@ + '#0f0f1e'])); + } + + public function togglePulse(): void + { + $this->pulseRunning = ! $this->pulseRunning; + } + + public function toggleSpin(): void + { + $this->spinRunning = ! $this->spinRunning; + } + + public function toggleTimer(): void + { + $this->timerRunning = ! $this->timerRunning; + } + + public function setTimerSeconds(int $seconds): void + { + $this->timerSeconds = $seconds; + $this->timerRunning = false; + } + + public function toggleBars(): void + { + $this->barAnimRunning = $this->barAnimRunning === 1 ? 0 : 1; + } + + public function toggleWave(): void + { + $this->waveRunning = $this->waveRunning === 1 ? 0 : 1; + } + + public function render(): Element + { + return $this->view('skia-showcase'); + } +} \ No newline at end of file diff --git a/app/Providers/NativeServiceProvider.php b/app/Providers/NativeServiceProvider.php index a0568be..4fd146e 100644 --- a/app/Providers/NativeServiceProvider.php +++ b/app/Providers/NativeServiceProvider.php @@ -34,10 +34,13 @@ public function boot(): void public function plugins(): array { return [ - \Nativephp\ComposeUi\ComposeUIServiceProvider::class, +// \Nativephp\ComposeUi\ComposeUIServiceProvider::class, \Native\Mobile\Providers\DialogServiceProvider::class, \Native\Mobile\Providers\DeviceServiceProvider::class, - +// \Native\Mobile\Providers\BackgroundTasksServiceProvider::class, +// \Native\Mobile\Providers\TimerServiceProvider::class, +// \Native\Mobile\Providers\DebugLogServiceProvider::class, +// \NativePhp\SkiaCanvas\SkiaCanvasServiceProvider::class, ]; } } diff --git a/composer.json b/composer.json index 5be5726..157f0d9 100644 --- a/composer.json +++ b/composer.json @@ -9,20 +9,14 @@ ], "repositories": { - "ui": { - "type": "vcs", - "url": "https://github.com/NativePHP/compose-ui.git" - } }, "license": "MIT", "require": { - "php": "^8.2", + "php": "^8.5", "laravel/fortify": "^1.30", "laravel/framework": "^12.0", "laravel/tinker": "^2.10.1", - "livewire/flux": "^2.9.0", "livewire/livewire": "^4.0", - "nativephp/compose-ui": "*", "nativephp/mobile": "dev-element", "nativephp/mobile-device": "^1.0", "nativephp/mobile-dialog": "^1.0" diff --git a/composer.lock b/composer.lock index 4456cf1..ddf251f 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": "bdb93948b6fcb63cb879c61d75632248", + "content-hash": "6c375aea0ce9f0900568bfa2c7bdf9f4", "packages": [ { "name": "bacon/bacon-qr-code", @@ -1076,16 +1076,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "21dc724a0583619cd1652f673303492272778051" + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", - "reference": "21dc724a0583619cd1652f673303492272778051", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884", + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884", "shasum": "" }, "require": { @@ -1101,6 +1101,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", + "jshttp/mime-db": "1.54.0.1", "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { @@ -1172,7 +1173,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.8.0" + "source": "https://github.com/guzzle/psr7/tree/2.9.0" }, "funding": [ { @@ -1188,7 +1189,7 @@ "type": "tidelift" } ], - "time": "2025-08-23T21:21:41+00:00" + "time": "2026-03-10T16:41:02+00:00" }, { "name": "guzzlehttp/uri-template", @@ -1278,16 +1279,16 @@ }, { "name": "laravel/fortify", - "version": "v1.35.0", + "version": "v1.36.1", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "24c5bb81ea4787e0865c4a62f054ed7d1cb7a093" + "reference": "cad8bfeb63f6818f173d40090725c565c92651d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/24c5bb81ea4787e0865c4a62f054ed7d1cb7a093", - "reference": "24c5bb81ea4787e0865c4a62f054ed7d1cb7a093", + "url": "https://api.github.com/repos/laravel/fortify/zipball/cad8bfeb63f6818f173d40090725c565c92651d4", + "reference": "cad8bfeb63f6818f173d40090725c565c92651d4", "shasum": "" }, "require": { @@ -1337,20 +1338,20 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2026-02-24T14:00:44+00:00" + "time": "2026-03-10T19:59:49+00:00" }, { "name": "laravel/framework", - "version": "v12.53.0", + "version": "v12.54.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "f57f035c0d34503d9ff30be76159bb35a003cd1f" + "reference": "325497463e7599cd14224c422c6e5dd2fe832868" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/f57f035c0d34503d9ff30be76159bb35a003cd1f", - "reference": "f57f035c0d34503d9ff30be76159bb35a003cd1f", + "url": "https://api.github.com/repos/laravel/framework/zipball/325497463e7599cd14224c422c6e5dd2fe832868", + "reference": "325497463e7599cd14224c422c6e5dd2fe832868", "shasum": "" }, "require": { @@ -1371,7 +1372,7 @@ "guzzlehttp/uri-template": "^1.0", "laravel/prompts": "^0.3.0", "laravel/serializable-closure": "^1.3|^2.0", - "league/commonmark": "^2.7", + "league/commonmark": "^2.8.1", "league/flysystem": "^3.25.1", "league/flysystem-local": "^3.25.1", "league/uri": "^7.5.1", @@ -1559,20 +1560,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2026-02-24T14:35:15+00:00" + "time": "2026-03-10T20:25:56+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.13", + "version": "v0.3.14", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d" + "reference": "9f0e371244eedfe2ebeaa72c79c54bb5df6e0176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/ed8c466571b37e977532fb2fd3c272c784d7050d", - "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d", + "url": "https://api.github.com/repos/laravel/prompts/zipball/9f0e371244eedfe2ebeaa72c79c54bb5df6e0176", + "reference": "9f0e371244eedfe2ebeaa72c79c54bb5df6e0176", "shasum": "" }, "require": { @@ -1616,9 +1617,9 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.13" + "source": "https://github.com/laravel/prompts/tree/v0.3.14" }, - "time": "2026-02-06T12:17:10+00:00" + "time": "2026-03-01T09:02:38+00:00" }, { "name": "laravel/serializable-closure", @@ -2306,72 +2307,6 @@ ], "time": "2026-01-15T06:54:53+00:00" }, - { - "name": "livewire/flux", - "version": "v2.13.0", - "source": { - "type": "git", - "url": "https://github.com/livewire/flux.git", - "reference": "741be2d4526e90b97c7a59e079a2f27ecdce2461" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/livewire/flux/zipball/741be2d4526e90b97c7a59e079a2f27ecdce2461", - "reference": "741be2d4526e90b97c7a59e079a2f27ecdce2461", - "shasum": "" - }, - "require": { - "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|^8.0" - }, - "conflict": { - "livewire/blaze": "<1.0.0-beta.2" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "Flux": "Flux\\Flux" - }, - "providers": [ - "Flux\\FluxServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Flux\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "proprietary" - ], - "authors": [ - { - "name": "Caleb Porzio", - "email": "calebporzio@gmail.com" - } - ], - "description": "The official UI component library for Livewire.", - "keywords": [ - "components", - "flux", - "laravel", - "livewire", - "ui" - ], - "support": { - "issues": "https://github.com/livewire/flux/issues", - "source": "https://github.com/livewire/flux/tree/v2.13.0" - }, - "time": "2026-03-03T03:32:35+00:00" - }, { "name": "livewire/livewire", "version": "v4.2.1", @@ -2551,77 +2486,18 @@ ], "time": "2026-01-02T08:56:05+00:00" }, - { - "name": "nativephp/compose-ui", - "version": "dev-main", - "source": { - "type": "git", - "url": "https://github.com/NativePHP/compose-ui.git", - "reference": "a856b51c50e15ebec3d6b3ee40e58de3a27cbad3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/NativePHP/compose-ui/zipball/a856b51c50e15ebec3d6b3ee40e58de3a27cbad3", - "reference": "a856b51c50e15ebec3d6b3ee40e58de3a27cbad3", - "shasum": "" - }, - "require": { - "nativephp/mobile": "*", - "php": "^8.2" - }, - "require-dev": { - "pestphp/pest": "^3.0" - }, - "default-branch": true, - "type": "nativephp-ui-plugin", - "extra": { - "laravel": { - "providers": [ - "Nativephp\\ComposeUi\\ComposeUIServiceProvider" - ] - }, - "nativephp": { - "manifest": "nativephp.json" - } - }, - "autoload": { - "psr-4": { - "Nativephp\\ComposeUi\\": "src/" - } - }, - "scripts": { - "test": [ - "pest" - ] - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Your Name", - "email": "you@example.com" - } - ], - "description": "A NativePHP Mobile plugin", - "support": { - "source": "https://github.com/NativePHP/compose-ui/tree/main", - "issues": "https://github.com/NativePHP/compose-ui/issues" - }, - "time": "2026-03-07T17:22:32+00:00" - }, { "name": "nativephp/mobile", "version": "dev-element", "source": { "type": "git", "url": "https://github.com/NativePHP/mobile-air.git", - "reference": "d99b6799cd9238d7655df654071d8bbccb72c890" + "reference": "8b28b68ae4f5ac9de66b7355adac9140cf0b7529" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/NativePHP/mobile-air/zipball/d99b6799cd9238d7655df654071d8bbccb72c890", - "reference": "d99b6799cd9238d7655df654071d8bbccb72c890", + "url": "https://api.github.com/repos/NativePHP/mobile-air/zipball/8b28b68ae4f5ac9de66b7355adac9140cf0b7529", + "reference": "8b28b68ae4f5ac9de66b7355adac9140cf0b7529", "shasum": "" }, "require": { @@ -2691,20 +2567,20 @@ "issues": "https://github.com/NativePHP/mobile-air/issues", "source": "https://github.com/NativePHP/mobile-air/tree/element" }, - "time": "2026-03-07T18:39:24+00:00" + "time": "2026-03-12T18:30:28+00:00" }, { "name": "nativephp/mobile-device", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/NativePHP/mobile-device.git", - "reference": "51e27e978843a082ac02c88ac59a84dfbe667660" + "reference": "91f569fdc903961f06776e865b856369660de4c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/NativePHP/mobile-device/zipball/51e27e978843a082ac02c88ac59a84dfbe667660", - "reference": "51e27e978843a082ac02c88ac59a84dfbe667660", + "url": "https://api.github.com/repos/NativePHP/mobile-device/zipball/91f569fdc903961f06776e865b856369660de4c6", + "reference": "91f569fdc903961f06776e865b856369660de4c6", "shasum": "" }, "require": { @@ -2734,9 +2610,9 @@ "description": "Device hardware operations for NativePHP Mobile", "support": { "issues": "https://github.com/NativePHP/mobile-device/issues", - "source": "https://github.com/NativePHP/mobile-device/tree/1.0.0" + "source": "https://github.com/NativePHP/mobile-device/tree/1.0.1" }, - "time": "2026-01-19T23:53:05+00:00" + "time": "2026-03-12T22:12:09+00:00" }, { "name": "nativephp/mobile-dialog", @@ -2791,16 +2667,16 @@ }, { "name": "nesbot/carbon", - "version": "3.11.1", + "version": "3.11.3", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "f438fcc98f92babee98381d399c65336f3a3827f" + "reference": "6a7e652845bb018c668220c2a545aded8594fbbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f", - "reference": "f438fcc98f92babee98381d399c65336f3a3827f", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6a7e652845bb018c668220c2a545aded8594fbbf", + "reference": "6a7e652845bb018c668220c2a545aded8594fbbf", "shasum": "" }, "require": { @@ -2892,7 +2768,7 @@ "type": "tidelift" } ], - "time": "2026-01-29T09:26:29+00:00" + "time": "2026-03-11T17:23:39+00:00" }, { "name": "nette/schema", @@ -7736,16 +7612,16 @@ }, { "name": "laravel/boost", - "version": "v2.2.3", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/laravel/boost.git", - "reference": "44ab65a5455c2d6fceb71d6145f8d5d89c02d889" + "reference": "ba0a9e6497398b6ce8243f5517b67d6761509150" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/boost/zipball/44ab65a5455c2d6fceb71d6145f8d5d89c02d889", - "reference": "44ab65a5455c2d6fceb71d6145f8d5d89c02d889", + "url": "https://api.github.com/repos/laravel/boost/zipball/ba0a9e6497398b6ce8243f5517b67d6761509150", + "reference": "ba0a9e6497398b6ce8243f5517b67d6761509150", "shasum": "" }, "require": { @@ -7798,20 +7674,20 @@ "issues": "https://github.com/laravel/boost/issues", "source": "https://github.com/laravel/boost" }, - "time": "2026-03-06T20:20:28+00:00" + "time": "2026-03-12T09:06:47+00:00" }, { "name": "laravel/mcp", - "version": "v0.6.0", + "version": "v0.6.2", "source": { "type": "git", "url": "https://github.com/laravel/mcp.git", - "reference": "28860a10ca0cc5433e25d897ba7af844e6c7b6a2" + "reference": "f696e44735b95ff275392eab8ce5a3b4b42a2223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/mcp/zipball/28860a10ca0cc5433e25d897ba7af844e6c7b6a2", - "reference": "28860a10ca0cc5433e25d897ba7af844e6c7b6a2", + "url": "https://api.github.com/repos/laravel/mcp/zipball/f696e44735b95ff275392eab8ce5a3b4b42a2223", + "reference": "f696e44735b95ff275392eab8ce5a3b4b42a2223", "shasum": "" }, "require": { @@ -7871,7 +7747,7 @@ "issues": "https://github.com/laravel/mcp/issues", "source": "https://github.com/laravel/mcp" }, - "time": "2026-02-24T08:43:06+00:00" + "time": "2026-03-10T20:00:23+00:00" }, { "name": "laravel/pail", @@ -7955,16 +7831,16 @@ }, { "name": "laravel/pint", - "version": "v1.27.1", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5" + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/54cca2de13790570c7b6f0f94f37896bee4abcb5", - "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5", + "url": "https://api.github.com/repos/laravel/pint/zipball/bdec963f53172c5e36330f3a400604c69bf02d39", + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39", "shasum": "" }, "require": { @@ -7975,13 +7851,14 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.93.1", - "illuminate/view": "^12.51.0", - "larastan/larastan": "^3.9.2", + "friendsofphp/php-cs-fixer": "^3.94.2", + "illuminate/view": "^12.54.1", + "larastan/larastan": "^3.9.3", "laravel-zero/framework": "^12.0.5", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^2.3.3", - "pestphp/pest": "^3.8.5" + "nunomaduro/termwind": "^2.4.0", + "pestphp/pest": "^3.8.6", + "shipfastlabs/agent-detector": "^1.1.0" }, "bin": [ "builds/pint" @@ -8018,7 +7895,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-02-10T20:00:20+00:00" + "time": "2026-03-12T15:51:39+00:00" }, { "name": "laravel/roster", @@ -8385,21 +8262,21 @@ }, { "name": "pestphp/pest", - "version": "v4.4.1", + "version": "v4.4.2", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a" + "reference": "5d42e8fe3ae1d9fdf7c9f73ee88138fd30265701" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/f96a1b27864b585b0b29b0ee7331176726f7e54a", - "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a", + "url": "https://api.github.com/repos/pestphp/pest/zipball/5d42e8fe3ae1d9fdf7c9f73ee88138fd30265701", + "reference": "5d42e8fe3ae1d9fdf7c9f73ee88138fd30265701", "shasum": "" }, "require": { "brianium/paratest": "^7.19.0", - "nunomaduro/collision": "^8.9.0", + "nunomaduro/collision": "^8.9.1", "nunomaduro/termwind": "^2.4.0", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", @@ -8419,7 +8296,7 @@ "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.20" + "psy/psysh": "^0.12.21" }, "bin": [ "bin/pest" @@ -8485,7 +8362,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v4.4.1" + "source": "https://github.com/pestphp/pest/tree/v4.4.2" }, "funding": [ { @@ -8497,7 +8374,7 @@ "type": "github" } ], - "time": "2026-02-17T15:27:18+00:00" + "time": "2026-03-10T21:09:12+00:00" }, { "name": "pestphp/pest-plugin", @@ -10842,7 +10719,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2" + "php": "^8.5" }, "platform-dev": {}, "plugin-api-version": "2.9.0" diff --git a/database/.DS_Store b/database/.DS_Store new file mode 100644 index 0000000..b9e6e8e Binary files /dev/null and b/database/.DS_Store differ diff --git a/resources/.DS_Store b/resources/.DS_Store new file mode 100644 index 0000000..3d29c97 Binary files /dev/null and b/resources/.DS_Store differ diff --git a/resources/views/native/demo.blade.php b/resources/views/native/demo.blade.php index 87d2c5c..67ad475 100644 --- a/resources/views/native/demo.blade.php +++ b/resources/views/native/demo.blade.php @@ -13,14 +13,16 @@ @endphp @include('native.partials.demo-nav', ['title' => 'Component Demo']) - + {{-- Header --}} - EDGE Component Demo + + EDGE Component Demo - Every native UI element rendered from PHP + + Every native UI element rendered from PHP @@ -188,7 +190,7 @@ - First time in NY? + Prompt for bio diff --git a/resources/views/native/explore.blade.php b/resources/views/native/explore.blade.php index 5627a69..2d8e121 100644 --- a/resources/views/native/explore.blade.php +++ b/resources/views/native/explore.blade.php @@ -1,123 +1,1184 @@ -@include('native.partials.demo-nav', ['title' => 'AirBNB']) - - +{{----}} + + + {{-- ============================================= --}} + {{-- HEADER --}} + {{-- ============================================= --}} + + UI Kitchen Sink + Every core primitive, styled to the nines + + + + + {{-- ============================================= --}} + {{-- TYPOGRAPHY --}} + {{-- ============================================= --}} + Typography + + text-xs (12pt) — The quick brown fox + text-sm (14pt) — The quick brown fox + text-base (16pt) — The quick brown fox + text-lg (18pt) — The quick brown fox + text-xl (20pt) — The quick brown fox + text-2xl bold + text-3xl extrabold + + + + font-thin + font-light + font-normal + font-medium + font-semibold + font-bold + font-extrabold + + + + text-left aligned + text-center aligned + text-right aligned + + + + + {{-- ============================================= --}} + {{-- ALL TAILWIND COLORS --}} + {{-- ============================================= --}} + All Tailwind Colors + + {{-- Slate --}} + Slate + + + + + + + + + + + + + {{-- Gray --}} + Gray + + + + + + + + + + + + + {{-- Zinc --}} + Zinc + + + + + + + + + + + + + {{-- Neutral --}} + Neutral + + + + + + + + + + + + + {{-- Stone --}} + Stone + + + + + + + + + + + + + {{-- Red --}} + Red + + + + + + + + + + + + + {{-- Orange --}} + Orange + + + + + + + + + + + + + {{-- Amber --}} + Amber + + + + + + + + + + + + + {{-- Yellow --}} + Yellow + + + + + + + + + + + + + {{-- Lime --}} + Lime + + + + + + + + + + + + + {{-- Green --}} + Green + + + + + + + + + + + + + {{-- Emerald --}} + Emerald + + + + + + + + + + + + + {{-- Teal --}} + Teal + + + + + + + + + + + + + {{-- Cyan --}} + Cyan + + + + + + + + + + + + + {{-- Sky --}} + Sky + + + + + + + + + + + + + {{-- Blue --}} + Blue + + + + + + + + + + + + + {{-- Indigo --}} + Indigo + + + + + + + + + + + + + {{-- Violet --}} + Violet + + + + + + + + + + + + + {{-- Purple --}} + Purple + + + + + + + + + + + + + {{-- Fuchsia --}} + Fuchsia + + + + + + + + + + + + + {{-- Pink --}} + Pink + + + + + + + + + + + + + {{-- Rose --}} + Rose + + + + + + + + + + + + + + + {{-- ============================================= --}} + {{-- BUTTONS --}} + {{-- ============================================= --}} + Buttons + + {{-- Solid buttons — horizontal scroll --}} + + + + Primary + + + Danger + + + Success + + + Warning + + + Purple + + + Pink + + + + + {{-- Pill buttons — horizontal scroll --}} + + + + Pill Button + + + Pink Pill + + + Teal Pill + + + Rose Pill + + + Cyan Pill + + + + + {{-- Outlined / ghost style buttons --}} + + + Outlined + + + Outlined + + + Ghost + + + + {{-- Icon buttons --}} + + + + + + + + + + + + + + + + + + + - + {{-- ============================================= --}} + {{-- INTERACTIVE COUNTER --}} + {{-- ============================================= --}} + Interactive Counter + + + − + + + {{ $count }} + + + + + + - - - - Where to? - Anywhere · Any week · Add guests + + + {{-- ============================================= --}} + {{-- BORDER RADIUS — horizontal scroll --}} + {{-- ============================================= --}} + Border Radius + + + + none + + + sm - - - + + md + + + lg + + + xl + + + 2xl + + + 3xl + + + full - + - - - @foreach ($categories as $catIndex => $cat) - - - {{ $cat['name'] }} - @if ($selectedCategory === $catIndex) - - @endif - - @endforeach + + + {{-- ============================================= --}} + {{-- SHADOWS / ELEVATION --}} + {{-- ============================================= --}} + Shadows & Elevation + + + + none + + + sm + + + md + + + lg + + + xl + + + 2xl + - - - Listing Cards - - @foreach ($listings as $listing) - - Image with Heart - - - - - Wishlist Heart - - - - - - Guest Favorite Badge - @if ($listing['rating'] >= 4.9) - - - Guest favorite - - - @endif - - - Info Below Image - - - {{ $listing['location'] }} - - - {{ $listing['rating'] }} - - - {{ $listing['distance'] }} - {{ $listing['dates'] }} - - ${{ $listing['price'] }} - night - - + + + {{-- ============================================= --}} + {{-- BORDERS --}} + {{-- ============================================= --}} + Borders + + + 1px + + + 2px blue + + + 4px red + + + pill + + + + + + {{-- ============================================= --}} + {{-- OPACITY --}} + {{-- ============================================= --}} + Opacity + + + 100 + + + 75 + + + 50 + + + 25 + + + 10 + + + + + + {{-- ============================================= --}} + {{-- ICONS — only mapped SF Symbol names --}} + {{-- ============================================= --}} + Icons + All mapped icon names + + {{-- Row 1: Navigation --}} + + + + + home - @endforeach - + + + search + + + + settings + + + + dashboard + + + + menu + + + + person + + + + profile + + + + + {{-- Row 2: Content --}} + + + + + favorite + + + + star + + + + bookmark + + + + photo + + + + camera + + + + video + + + + folder + + + + + {{-- Row 3: Communication --}} + + + + + mail + + + + notifications + + + + message + + + + chat + + + + phone + + + + share + + + + + {{-- Row 4: Actions & Status --}} + + + + + add + + + + edit + + + + delete + + + + check + + + + close + + + + warning + + + + info + + + + + {{-- Row 5: Device & Misc --}} + + + + + lock + + + + unlock + + + + location + + + + globe + + + + bolt + + + + clock + + + + calendar + + + + qrcode + + + + + {{-- Row 6: Commerce & SF Symbols direct --}} + + + + + cart + + + + orders + + + + download + + + + upload + + + + refresh + + + + filter + + + + list + + + + + + + {{-- ============================================= --}} + {{-- TEXT INPUT --}} + {{-- ============================================= --}} + Text Input + + + + + + {{-- ============================================= --}} + {{-- TOGGLE --}} + {{-- ============================================= --}} + Toggle + + + + + + {{-- ============================================= --}} + {{-- IMAGE --}} + {{-- ============================================= --}} + Image + + + + + + + + + + + + + {{-- ============================================= --}} + {{-- FLEX LAYOUT --}} + {{-- ============================================= --}} + Flex Layout + + justify-start + + + + + + + justify-center + + + + + + + justify-end + + + + + + + justify-between + + + + + + + justify-evenly + + + + + + + flex-1 distribution + + + 1 + + + 1 + + + 1 + + + + - Bottom Navigation - - - - - Explore + {{-- ============================================= --}} + {{-- STACK (LAYERED) --}} + {{-- ============================================= --}} + Stack (Layered) + + {{-- Notification badge on avatar --}} + + + SR - - - Wishlists + + + 3 + + + + + {{-- Overlay on image --}} + + + + + Overlaid Text + Stacked on top of an image + - - - Trips + + + + + {{-- ============================================= --}} + {{-- CANVAS & SHAPES --}} + {{-- ============================================= --}} + Canvas & Shapes + + {{-- Rectangles --}} + + + + + + {{-- Circles --}} + + + + + + + {{-- Lines --}} + + + + + + + + + {{-- ============================================= --}} + {{-- CARD-STYLE LAYOUTS --}} + {{-- ============================================= --}} + Card Layouts + + {{-- Profile card --}} + + + + JD + + + Jane Doe + Senior Developer + + + + Building beautiful native apps with PHP. Loves clean architecture, Tailwind, and strong coffee. + + + Follow + + + Message + + + + + {{-- Stats card --}} + + + + 2.4k + Followers - - - Inbox + + + 182 + Stars - - - Profile + + + 47 + Repos + + + {{-- ============================================= --}} + {{-- LIST ITEMS --}} + {{-- ============================================= --}} + List Items + + {{-- Item 1 --}} + + + + + + + Messages + 3 unread messages + + + 3 + + + + + + {{-- Item 2 --}} + + + + + + + Notifications + Push & email alerts + + + + + + {{-- Item 3 --}} + + + + + + + Privacy + Manage your data + + + + + + {{-- Item 4 --}} + + + + + + + Settings + App preferences + + + + + + + + + {{-- ============================================= --}} + {{-- ACTIVITY INDICATOR --}} + {{-- ============================================= --}} + Activity Indicator + + + Default + + + + Large + + + + Small + + + + + + + + Custom colors + + + + + {{-- ============================================= --}} + {{-- CREATIVE COMPOSITIONS --}} + {{-- ============================================= --}} + Creative Compositions + + {{-- Faux gradient banner --}} + + + + + + + + NativePHP + Build native. Write PHP. + + + + {{-- Tag cloud --}} + + + + Laravel + + + PHP + + + Swift + + + Kotlin + + + Yoga + + + Tailwind + + + UIKit + + + Compose + + + + + {{-- Chat bubble mockup --}} + + + + Hey, have you tried NativePHP yet? + + + + + Yes! Native iOS and Android apps in PHP. The Yoga layout is pixel-perfect. + + + + + Tailwind classes just work! + + + + + {{-- Bottom padding --}} +{{----}} + +{{-- Bottom Navigation --}} +{{----}} +{{-- --}} +{{-- --}} +{{-- Home--}} +{{-- --}} +{{-- --}} +{{-- --}} +{{-- Search--}} +{{-- --}} +{{-- --}} +{{-- --}} +{{-- Favorites--}} +{{-- --}} +{{-- --}} +{{-- --}} +{{-- Profile--}} +{{-- --}} +{{----}} +{{----}} diff --git a/resources/views/native/partials/demo-nav.blade.php b/resources/views/native/partials/demo-nav.blade.php index 90545ac..462b391 100644 --- a/resources/views/native/partials/demo-nav.blade.php +++ b/resources/views/native/partials/demo-nav.blade.php @@ -17,9 +17,10 @@ - + + diff --git a/resources/views/native/skia-showcase.blade.php b/resources/views/native/skia-showcase.blade.php new file mode 100644 index 0000000..0c33714 --- /dev/null +++ b/resources/views/native/skia-showcase.blade.php @@ -0,0 +1,342 @@ +@include('native.partials.demo-nav', ['title' => 'Skia Canvas']) + + + + + {{-- 1. BASIC SHAPES --}} + Basic Shapes + + + + + + + + + + {{-- 2. LINES & PATHS --}} + Lines & Paths + + + + + + + + + + {{-- 3. TEXT --}} + Text + + + + + + + + + {{-- 4. GRADIENTS --}} + Gradients + + + + + + + + + + + + + + + {{-- 5. ANIMATIONS --}} + Animations + + + + + + + + + + + + + + + {{ $pulseRunning ? 'Pause' : 'Play' }} + + + + + + + + + + + + + + + + {{ $spinRunning ? 'Pause' : 'Play' }} + + + + + {{-- 6. TIMER RING --}} + Timer Ring + + @php $totalSec = $timerSeconds; @endphp + + + + + + + + + + + + + + + + + + + + 10s + 30s + 1m + 5m + + + @if($timerRunning) + Cancel + @else + Start Timer + @endif + + + {{-- 7. BAR CHART --}} + Animated Bar Chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + Replay Bars + + + {{-- 8. GAUGE --}} + Gauge + + + + + + + + + + + + + + + + + + {{-- 9. PIE CHART --}} + Pie Chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- 10. GROUP TRANSFORMS --}} + Group Transforms + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- 11. COLOR ANIMATION --}} + Color Animation + + + + + + + + + + + + + + + + + + + + + + + {{-- React Native Skia "Hello World" — overlapping circles with multiply blend --}} + Multiply Blend + + + + + + + + + + + {{-- Screen blend --}} + Screen Blend + + + + + + + + + + + {{-- Overlay blend --}} + Overlay Blend + + + + + + + + + + + + diff --git a/routes/console.php b/routes/console.php index 3c9adf1..f7cf365 100644 --- a/routes/console.php +++ b/routes/console.php @@ -2,7 +2,14 @@ use Illuminate\Foundation\Inspiring; use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Schedule; Artisan::command('inspire', function () { $this->comment(Inspiring::quote()); })->purpose('Display an inspiring quote'); + +//Schedule::command('sync:data') +// ->everyFifteenMinutes() +// ->nativeConstraints(function ($c) { +// $c->requiresNetwork(); +// }); diff --git a/routes/web.php b/routes/web.php index a9b6e37..6ceb213 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6,6 +6,7 @@ // Benchmark & Demo Route::native('/benchmark', BenchmarkComponent::class)->name('benchmark'); Route::native('/demo', \App\NativeComponents\Demo::class)->name('demo'); +Route::native('/skia', \App\NativeComponents\SkiaShowcase::class)->name('skia'); // Explore (Airbnb) Route::native('/', \App\NativeComponents\Explore::class)->name('explore'); diff --git a/storage/.DS_Store b/storage/.DS_Store new file mode 100644 index 0000000..ea43582 Binary files /dev/null and b/storage/.DS_Store differ diff --git a/tests/.DS_Store b/tests/.DS_Store new file mode 100644 index 0000000..4ba1ee2 Binary files /dev/null and b/tests/.DS_Store differ