From f5e4c8d1b63bdbef23318cd09785f6af8e61865a Mon Sep 17 00:00:00 2001 From: Shane Rosenthal Date: Wed, 11 Mar 2026 12:47:37 -0400 Subject: [PATCH 1/3] Adds UIKit support and Yoga --- .DS_Store | Bin 0 -> 10244 bytes .junie/.DS_Store | Bin 0 -> 6148 bytes AGENTS.md | 2 +- CLAUDE.md | 2 +- app/.DS_Store | Bin 0 -> 8196 bytes app/Console/Commands/SyncDataCommand.php | 19 + app/Jobs/SleepTest.php | 29 + app/NativeComponents/Explore.php | 59 +- app/NativeComponents/SkiaShowcase.php | 57 + app/Providers/NativeServiceProvider.php | 7 +- composer.json | 28 +- composer.lock | 79 +- database/.DS_Store | Bin 0 -> 6148 bytes resources/.DS_Store | Bin 0 -> 6148 bytes resources/views/native/demo.blade.php | 10 +- resources/views/native/explore.blade.php | 1234 +++++++++++++++-- .../views/native/partials/demo-nav.blade.php | 3 +- .../views/native/skia-showcase.blade.php | 342 +++++ routes/console.php | 7 + routes/web.php | 1 + storage/.DS_Store | Bin 0 -> 6148 bytes tests/.DS_Store | Bin 0 -> 6148 bytes 22 files changed, 1678 insertions(+), 201 deletions(-) create mode 100644 .DS_Store create mode 100644 .junie/.DS_Store create mode 100644 app/.DS_Store create mode 100644 app/Console/Commands/SyncDataCommand.php create mode 100644 app/Jobs/SleepTest.php create mode 100644 app/NativeComponents/SkiaShowcase.php create mode 100644 database/.DS_Store create mode 100644 resources/.DS_Store create mode 100644 resources/views/native/skia-showcase.blade.php create mode 100644 storage/.DS_Store create mode 100644 tests/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ddc1631c7307c0573e8061084b2da009ea0ba31e GIT binary patch literal 10244 zcmeI1%WD%s9LIl~CTT(owud5uhn&=+lvaBZ53yEkeL$s$BGyNmzM^dt>_hNkE-L6j z1jU;c)PwY(r{d$}$&+|d5iiD*&}wV_3;h0OHre0oBX|-ivt{?U-TBV^KKbsauPu>!_=f<1RiNH?!leP#l#V?PrvnoUD%aXdSQ)1RdbDdjoY) zjtWx~#`^t-S2A7f?H!paj^Ik_>5Z<9l_zfx%F@v~rKL&Psv4b*$d{)n1D_9Rn%rNKvw5X1L8=w@gf_hrH)+t}qVmrRw@ohMfHTw$~!X`(a+hcmz& zDfG=89LmA39K167NG#qKrjb0?mbdTws_#{xEy+|*XK*zz7Vh7S;wsPr#!d;N*|>kZ zkALScEg>q&HhXILO-auwp-QhO*H=ouJ#7`{YX)CYjq7tXt9*n09vP$5~?_rI>r;l6g{U5i#pp2W5a z^CYw*I2t{jXyCnBDmm^9y{dAE`jR1BA@gJP!dp_!2QwIX@I?0CME}j5{&LBX=oim3 zo>Sa5Bt?`)ax}J9n8R+?0qcNuz&c7;=O~t zJ@`=iYisb+#c(Nu{XBNwSXb6jRl$KJd|kbc$3Of!p5G1dHMKZ!&$DhU>!_+jqpBnR WvmXQO`roeqL*Eg|_0wiv|NjBft`W@u literal 0 HcmV?d00001 diff --git a/.junie/.DS_Store b/.junie/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ddc4528c78136d9837d4ba02e42d9822797e183b GIT binary patch literal 6148 zcmeHKK~BR!476!gMdH#U;=+ER;sI={zz6yP)K&sSqC~2C50Bx(g=g>rZb)1auV8F1 zG=abgAwYJuJG=JU-b~bWmWX(^Sxtz>M3kWkvJ84e)V-#iv{;NRF(&h6Rn|Qrey>XQ zKA@78R2OIM{qz3TQdW7sD5?cC*}>Dp{qyzRv~68|VXe>GQH5t3(V8ylf(rcB-K-}! z@9pi}qob?C$6L+aiBVSD9elQ?yN|#1l7uuDXTTY72AqL!V*oWNXTTZwXAJN#pXW0?RI05X z9#3j*Ks!Yfk#&s>AQ)>Y25KqBM9z^tHJUxh81|U3F_b8xS9hR)2q+=mIRihyzzckP BN7MiS literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c735bf9b10de798657aeb4da569bc32e31b4e5ea GIT binary patch literal 8196 zcmeHMJ#Q2-5FLjNcYG9~iBfKXghWLsDA6WaB!mDVMbwb{03zMpo-W}-LJ|8*(m;VI z5H%7N1r2|Jk`~d^@I0Q~_1=2JQ9+ckWY3-Fjs5)W+tv7p$ZS3xtP`yfQ5V(Pm2+qU z#rkb+lqKo82x|~el+lFtMvvFG`&k369jbsTpbDr0s(>o+KPZ5Awk_S3_rCLLs|u(B zCsG0Xe27u4O~mHT@}mO{rvR`Ky1C#p@&JyB#U^5NXE_vOy6nM7sF4)IxN!Jm3x`d_ z=FYlsGA^8q%xok>F+4lsVuq7RoYhtpPz9O_*xbEC8`P(L+V%7I@zjBre>M^0EKPf( ztOt+%*=_9{e%T121`D93PwZ_$FC=#A)r~@d>3j}hS~xYv8fQUP4P1a% zM|kal-H3+no}*x8UVzmc!sm2tc>n67_o9?4yg*#FhQEoctt;Yl zeunO0w=?YgE~`A7TM1owhm{0SKKJvN9;7eb84MyTwnrmt{OAfM)}jg=O9f6j)@wHZ zztMjGe=OIgq*Vb`U@-+uly0Y+z)Ei2h_bnMjQSAO7K_WBB>~4qN_Vh|e*g YHYO39JBuEae{d0??|)Wao0F`-Z(2$|$p8QV literal 0 HcmV?d00001 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..0024182 100644 --- a/composer.json +++ b/composer.json @@ -10,20 +10,40 @@ "repositories": { "ui": { - "type": "vcs", - "url": "https://github.com/NativePHP/compose-ui.git" + "type": "path", + "url": "~/Herd/Plugins/nativephp/compose-ui" + }, + "mobile": { + "type": "path", + "url": "../mobile-air" + }, + "bg": { + "type": "path", + "url": "~/Herd/Plugins/nativephp/background-tasks" + }, + "timer": { + "type": "path", + "url": "~/Herd/Plugins/nativephp/timer" + }, + "debug": { + "type": "path", + "url": "~/Herd/Plugins/nativephp/debug-log" + }, + "skia": { + "type": "path", + "url": "~/Herd/Plugins/nativephp/skia-canvas" } }, "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": "*", "nativephp/mobile-device": "^1.0", "nativephp/mobile-dialog": "^1.0" }, diff --git a/composer.lock b/composer.lock index 4456cf1..3383ad0 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": "1740b19c6f0802b3771a78c45225e379", "packages": [ { "name": "bacon/bacon-qr-code", @@ -2554,16 +2554,10 @@ { "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": "" + "type": "path", + "url": "/Users/shanerosenthal/Herd/Plugins/nativephp/compose-ui", + "reference": "a856b51c50e15ebec3d6b3ee40e58de3a27cbad3" }, "require": { "nativephp/mobile": "*", @@ -2572,7 +2566,6 @@ "require-dev": { "pestphp/pest": "^3.0" }, - "default-branch": true, "type": "nativephp-ui-plugin", "extra": { "laravel": { @@ -2604,25 +2597,17 @@ } ], "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" + "transport-options": { + "relative": false + } }, { "name": "nativephp/mobile", - "version": "dev-element", - "source": { - "type": "git", - "url": "https://github.com/NativePHP/mobile-air.git", - "reference": "d99b6799cd9238d7655df654071d8bbccb72c890" - }, + "version": "dev-element-yoga", "dist": { - "type": "zip", - "url": "https://api.github.com/repos/NativePHP/mobile-air/zipball/d99b6799cd9238d7655df654071d8bbccb72c890", - "reference": "d99b6799cd9238d7655df654071d8bbccb72c890", - "shasum": "" + "type": "path", + "url": "../mobile-air", + "reference": "967beffa6d7c6b711d6ca40434ba01530178b27e" }, "require": { "endroid/qr-code": "^5.0", @@ -2663,7 +2648,33 @@ "Native\\Mobile\\": "src/" } }, - "notification-url": "https://packagist.org/downloads/", + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "qa": [ + "@composer format", + "@composer analyse", + "@composer test" + ], + "post-autoload-dump": [ + "@php ./vendor/bin/testbench package:discover --ansi" + ], + "analyse": [ + "vendor/bin/phpstan analyse" + ], + "test": [ + "vendor/bin/pest" + ], + "test-coverage": [ + "vendor/bin/pest --coverage" + ], + "format": [ + "vendor/bin/pint" + ] + }, "license": [ "MIT" ], @@ -2687,11 +2698,9 @@ "laravel", "nativephp" ], - "support": { - "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" + "transport-options": { + "relative": true + } }, { "name": "nativephp/mobile-device", @@ -10836,13 +10845,11 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "nativephp/mobile": 20 - }, + "stability-flags": {}, "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 0000000000000000000000000000000000000000..b9e6e8e091bab76be985c1d69c66437f40750ee2 GIT binary patch literal 6148 zcmeHKOHRWu5FM8a+QOm|86c0ksan|QBpiV)TXt|AZonIlDNd6J zRtTXPY5bh=vpspSVw;G}@L@V2>Jw21&e-ars4;G5uUIQYPJqUbk<*5jG^6cmQDJM~ zFDk&_u1j-DX+rlDeZRqIl4om4`S7})mE}n?Ugcx7@&dU`A73w;nA0CJ*SGP^ye_Fn z8CKN-Yb!;LOJsS+D=g-nzBlpW9ABP$=kq6@W9^t({*~o-+;X0d^E{$0*8Ys9@XdaP z=B>(zb3^N=etYA@Sv9lD`FPzxR#OF30ac(@0qogqont{QRRL8%71$}j{|5_abO8%N z|LZ{EuK>U{!roB#XAhv|0MG?21QCH5=?avtCR{O$bVu9o+uM{xtWRwi?N?~uUyd3Yf7JdU~ oV_qS+>w=2kioxZr_zdn1amy8;3s?vu0@H(lmq80v;8zv+0MFcUoB#j- literal 0 HcmV?d00001 diff --git a/resources/.DS_Store b/resources/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3d29c979098efaa99f6a4da534bd99bbf529039e GIT binary patch literal 6148 zcmeHKJ5Iwu5S?*Cln9EHlv^QD<_0F16QrbpB#4hFn$e0@i`(k^>wRrJd68w)MKOg%K7{k@x6iYxcm9iac~_lPzB5YbVY`}`&Ay|S z=Hx|dCH2+o=zItCME7(<&s)`cm#^?wyw#c?FQ+Hp@4CKP#HMn4M6Lcn*QpQTgEQa^ zI0Jjg0D87a|IpA!XTTY72G$J7{~8nHCAbYiWHd17UbClro5FAf?`oErM*3^)UI20C^-l>UFQ`}|)| z@;hh18TeNWa5tM|V=O85*2dzb*9PbnR7B!R!*vQSv=t*(TJbSd1@<5pz%*iM2n)nF N0!o7q&cL5C@B=p6Rwn=e literal 0 HcmV?d00001 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..cc45dc6 100644 --- a/resources/views/native/explore.blade.php +++ b/resources/views/native/explore.blade.php @@ -1,123 +1,1161 @@ -@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 + + + + search + + + + settings + + + + dashboard - @endforeach + + + 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 + + + + + + {{-- ============================================= --}} + {{-- STACK (LAYERED) --}} + {{-- ============================================= --}} + Stack (Layered) + + {{-- Notification badge on avatar --}} + + + SR + + + + 3 + + + + + {{-- Overlay on image --}} + + + + + Overlaid Text + Stacked on top of an image + + + + + + + {{-- ============================================= --}} + {{-- 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 + + + + 182 + Stars + + + + 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 + + + + - Bottom Navigation - - - - - Explore + + + {{-- ============================================= --}} + {{-- ACTIVITY INDICATOR --}} + {{-- ============================================= --}} + Activity Indicator + + + Loading content... + + + + + {{-- ============================================= --}} + {{-- CREATIVE COMPOSITIONS --}} + {{-- ============================================= --}} + Creative Compositions + + {{-- Faux gradient banner --}} + + + + + + + + NativePHP + Build native. Write PHP. + + + + {{-- Tag cloud --}} + + + Laravel + + + PHP - - - Wishlists + + Swift - - - Trips + + Kotlin - - - Inbox + + Yoga - - - Profile + + 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 0000000000000000000000000000000000000000..ea43582aef8d5c8975369db667d4efc91e8309ef GIT binary patch literal 6148 zcmeHKu};G<5Iv_ET41Qe!oZLpVCd30lprKnkop5{DYQUKA_`@Vm=Rxq7%LbM{Qw3w zz5$7kU}oZ-ZM6;!9TBSTr1NupclOJR630ZOYM1Q_QJIK}a7KR#O^$J#ea1XH!o`Z` zsMHVQe!`>Phm8q{0;0hGRe;~!0yQb2q}OrZ-|Nvd(vPF4)r(sgDW0tE-mX8tZMxC+ zoM_T@XMIH(mFS4hv1XqR>55|XPu;c2+keW>a(N(Qt9h?^Rfjd|S?ok5igI;J6%NvQkdnN;5&^Rrwo zE5pI4HnzIV%;&P2pXu`Rs-MhHY_Sx;p3PQVHYlwqAPR^A69xGD5WpEji>X2V=|H28 z06-tZ+R*1;3a$w(h89zUh`^L71)5T2j~L37V?3~Vp~cjoDJNwQAIh$*>z9!~g&Q literal 0 HcmV?d00001 diff --git a/tests/.DS_Store b/tests/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4ba1ee2fbd36c2ee2ce40f079bd4f17772a9b516 GIT binary patch literal 6148 zcmeHKOHRWu5Pef3QN*T8mcBx65K3T;RI#U}6(BXFLhU{$;S5}WHP_;e$Bh~#l~^GJ zGt&4u^Rbg>D`NwY>28?=698kX;^>UcfT&-!C!=Ihr^GRKc*Sb{n9m;SUbGv2BLlj2 zr?|lib8K<2e$~caH~;8IRCQS{*7brO&A*zzeO?YlEx!@9dD7jopY5H)Aj2JA@QkhP zq`eQfhrT24(B@Y4;OwoxJFo747iYj3a0dPj1FYF9<8woAodIXS8E6^M|3jcE76}`} z`0HR3uK>i1<|ypPvlKC?fmkGL3~8Z=r4lVw(iKB2o%WF8iiC}!r94qZd zBqt$;LkdH0odIW{%fN{}PPG1CAHV;1ll;jUa0dPq1Co`qa>`FiwYB$gT5ALKo~oj8 mjbWR@PAtWY)lz&xjY50S4zWns7}7%VgFvLg8)x808TbML??Y$+ literal 0 HcmV?d00001 From c45e9aa84e825726256b39201d000796463b803c Mon Sep 17 00:00:00 2001 From: Shane Rosenthal Date: Thu, 12 Mar 2026 10:10:00 -0400 Subject: [PATCH 2/3] Updates --- .gitignore | 2 + resources/views/native/explore.blade.php | 381 ++++++++++++----------- 2 files changed, 204 insertions(+), 179 deletions(-) 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/resources/views/native/explore.blade.php b/resources/views/native/explore.blade.php index cc45dc6..2d8e121 100644 --- a/resources/views/native/explore.blade.php +++ b/resources/views/native/explore.blade.php @@ -1,14 +1,14 @@ -{{----}} - +{{----}} + {{-- ============================================= --}} {{-- HEADER --}} {{-- ============================================= --}} - UI Kitchen Sink - Every core primitive, styled to the nines + UI Kitchen Sink + Every core primitive, styled to the nines @@ -16,31 +16,31 @@ {{-- ============================================= --}} {{-- TYPOGRAPHY --}} {{-- ============================================= --}} - 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 + 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 + font-thin + font-light + font-normal + font-medium + font-semibold + font-bold + font-extrabold - text-left aligned - text-center aligned - text-right aligned + text-left aligned + text-center aligned + text-right aligned @@ -48,10 +48,10 @@ {{-- ============================================= --}} {{-- ALL TAILWIND COLORS --}} {{-- ============================================= --}} - All Tailwind Colors + All Tailwind Colors {{-- Slate --}} - Slate + Slate @@ -65,7 +65,7 @@ {{-- Gray --}} - Gray + Gray @@ -79,7 +79,7 @@ {{-- Zinc --}} - Zinc + Zinc @@ -93,7 +93,7 @@ {{-- Neutral --}} - Neutral + Neutral @@ -107,7 +107,7 @@ {{-- Stone --}} - Stone + Stone @@ -121,7 +121,7 @@ {{-- Red --}} - Red + Red @@ -135,7 +135,7 @@ {{-- Orange --}} - Orange + Orange @@ -149,7 +149,7 @@ {{-- Amber --}} - Amber + Amber @@ -163,7 +163,7 @@ {{-- Yellow --}} - Yellow + Yellow @@ -177,7 +177,7 @@ {{-- Lime --}} - Lime + Lime @@ -191,7 +191,7 @@ {{-- Green --}} - Green + Green @@ -205,7 +205,7 @@ {{-- Emerald --}} - Emerald + Emerald @@ -219,7 +219,7 @@ {{-- Teal --}} - Teal + Teal @@ -233,7 +233,7 @@ {{-- Cyan --}} - Cyan + Cyan @@ -247,7 +247,7 @@ {{-- Sky --}} - Sky + Sky @@ -261,7 +261,7 @@ {{-- Blue --}} - Blue + Blue @@ -275,7 +275,7 @@ {{-- Indigo --}} - Indigo + Indigo @@ -289,7 +289,7 @@ {{-- Violet --}} - Violet + Violet @@ -303,7 +303,7 @@ {{-- Purple --}} - Purple + Purple @@ -317,7 +317,7 @@ {{-- Fuchsia --}} - Fuchsia + Fuchsia @@ -331,7 +331,7 @@ {{-- Pink --}} - Pink + Pink @@ -345,7 +345,7 @@ {{-- Rose --}} - Rose + Rose @@ -363,7 +363,7 @@ {{-- ============================================= --}} {{-- BUTTONS --}} {{-- ============================================= --}} - Buttons + Buttons {{-- Solid buttons — horizontal scroll --}} @@ -447,7 +447,7 @@ {{-- ============================================= --}} {{-- INTERACTIVE COUNTER --}} {{-- ============================================= --}} - Interactive Counter + Interactive Counter − @@ -465,7 +465,7 @@ {{-- ============================================= --}} {{-- BORDER RADIUS — horizontal scroll --}} {{-- ============================================= --}} - Border Radius + Border Radius @@ -500,26 +500,26 @@ {{-- ============================================= --}} {{-- SHADOWS / ELEVATION --}} {{-- ============================================= --}} - Shadows & Elevation + Shadows & Elevation - none + none - sm + sm - md + md - lg + lg - xl + xl - 2xl + 2xl @@ -529,10 +529,10 @@ {{-- ============================================= --}} {{-- BORDERS --}} {{-- ============================================= --}} - Borders + Borders - 1px + 1px 2px blue @@ -550,7 +550,7 @@ {{-- ============================================= --}} {{-- OPACITY --}} {{-- ============================================= --}} - Opacity + Opacity 100 @@ -565,7 +565,7 @@ 25 - 10 + 10 @@ -574,39 +574,39 @@ {{-- ============================================= --}} {{-- ICONS — only mapped SF Symbol names --}} {{-- ============================================= --}} - Icons - All mapped icon names + Icons + All mapped icon names {{-- Row 1: Navigation --}} - home + home - search + search - settings + settings - dashboard + dashboard - menu + menu - person + person - profile + profile @@ -616,31 +616,31 @@ - favorite + favorite - star + star - bookmark + bookmark - photo + photo - camera + camera - video + video - folder + folder @@ -650,27 +650,27 @@ - mail + mail - notifications + notifications - message + message - chat + chat - phone + phone - share + share @@ -680,31 +680,31 @@ - add + add - edit + edit - delete + delete - check + check - close + close - warning + warning - info + info @@ -714,35 +714,35 @@ - lock + lock - unlock + unlock - location + location - globe + globe - bolt + bolt - clock + clock - calendar + calendar - qrcode + qrcode @@ -752,31 +752,31 @@ - cart + cart - orders + orders - download + download - upload + upload - refresh + refresh - filter + filter - list + list @@ -786,7 +786,7 @@ {{-- ============================================= --}} {{-- TEXT INPUT --}} {{-- ============================================= --}} - Text Input + Text Input @@ -795,8 +795,8 @@ {{-- ============================================= --}} {{-- TOGGLE --}} {{-- ============================================= --}} - Toggle - + Toggle + @@ -804,68 +804,72 @@ {{-- ============================================= --}} {{-- IMAGE --}} {{-- ============================================= --}} - Image + Image - - - - + + + + + + + + {{-- ============================================= --}} {{-- FLEX LAYOUT --}} {{-- ============================================= --}} - Flex Layout + Flex Layout - justify-start + justify-start - justify-center + justify-center - justify-end + justify-end - justify-between + justify-between - justify-evenly + justify-evenly - flex-1 distribution + flex-1 distribution 1 @@ -883,7 +887,7 @@ class="flex-1 h-[120] rounded-lg" {{-- ============================================= --}} {{-- STACK (LAYERED) --}} {{-- ============================================= --}} - Stack (Layered) + Stack (Layered) {{-- Notification badge on avatar --}} @@ -917,7 +921,7 @@ class="w-full h-[180] rounded-xl" {{-- ============================================= --}} {{-- CANVAS & SHAPES --}} {{-- ============================================= --}} - Canvas & Shapes + Canvas & Shapes {{-- Rectangles --}} @@ -944,7 +948,7 @@ class="w-full h-[180] rounded-xl" {{-- ============================================= --}} {{-- CARD-STYLE LAYOUTS --}} {{-- ============================================= --}} - Card Layouts + Card Layouts {{-- Profile card --}} @@ -953,12 +957,12 @@ class="w-full h-[180] rounded-xl" JD - Jane Doe - Senior Developer + Jane Doe + Senior Developer - Building beautiful native apps with PHP. Loves clean architecture, Tailwind, and strong coffee. + Building beautiful native apps with PHP. Loves clean architecture, Tailwind, and strong coffee. Follow @@ -971,18 +975,18 @@ class="w-full h-[180] rounded-xl" {{-- Stats card --}} - + 2.4k Followers - + 182 Stars - - + + 47 Repos @@ -993,7 +997,7 @@ class="w-full h-[180] rounded-xl" {{-- ============================================= --}} {{-- LIST ITEMS --}} {{-- ============================================= --}} - List Items + List Items {{-- Item 1 --}} @@ -1002,8 +1006,8 @@ class="w-full h-[180] rounded-xl" - Messages - 3 unread messages + Messages + 3 unread messages 3 @@ -1019,8 +1023,8 @@ class="w-full h-[180] rounded-xl" - Notifications - Push & email alerts + Notifications + Push & email alerts @@ -1033,8 +1037,8 @@ class="w-full h-[180] rounded-xl" - Privacy - Manage your data + Privacy + Manage your data @@ -1047,8 +1051,8 @@ class="w-full h-[180] rounded-xl" - Settings - App preferences + Settings + App preferences @@ -1060,10 +1064,26 @@ class="w-full h-[180] rounded-xl" {{-- ============================================= --}} {{-- ACTIVITY INDICATOR --}} {{-- ============================================= --}} - Activity Indicator + Activity Indicator - Loading content... + Default + + + + Large + + + + Small + + + + + + + + Custom colors @@ -1071,7 +1091,7 @@ class="w-full h-[180] rounded-xl" {{-- ============================================= --}} {{-- CREATIVE COMPOSITIONS --}} {{-- ============================================= --}} - Creative Compositions + Creative Compositions {{-- Faux gradient banner --}} @@ -1087,32 +1107,34 @@ class="w-full h-[180] rounded-xl" {{-- Tag cloud --}} - - - Laravel - - - PHP - - - Swift - - - Kotlin - - - Yoga - - - Tailwind - - - UIKit - - - Compose - - + + + + Laravel + + + PHP + + + Swift + + + Kotlin + + + Yoga + + + Tailwind + + + UIKit + + + Compose + + + {{-- Chat bubble mockup --}} @@ -1122,8 +1144,8 @@ class="w-full h-[180] rounded-xl" - - Yes! Native iOS and Android apps in PHP. The Yoga layout is pixel-perfect. + + Yes! Native iOS and Android apps in PHP. The Yoga layout is pixel-perfect. @@ -1138,6 +1160,7 @@ class="w-full h-[180] rounded-xl" +{{----}} {{-- Bottom Navigation --}} {{----}} @@ -1147,15 +1170,15 @@ class="w-full h-[180] rounded-xl" {{-- --}} {{-- --}} {{-- --}} -{{-- Search--}} +{{-- Search--}} {{-- --}} {{-- --}} {{-- --}} -{{-- Favorites--}} +{{-- Favorites--}} {{-- --}} {{-- --}} {{-- --}} -{{-- Profile--}} +{{-- Profile--}} {{-- --}} {{----}} {{----}} From 94ef6ea8b9641c4d4cda8042725371162c304a33 Mon Sep 17 00:00:00 2001 From: Shane Rosenthal Date: Thu, 12 Mar 2026 19:26:56 -0400 Subject: [PATCH 3/3] Updates --- composer.json | 28 +---- composer.lock | 298 ++++++++++++++------------------------------------ 2 files changed, 85 insertions(+), 241 deletions(-) diff --git a/composer.json b/composer.json index 0024182..157f0d9 100644 --- a/composer.json +++ b/composer.json @@ -9,30 +9,6 @@ ], "repositories": { - "ui": { - "type": "path", - "url": "~/Herd/Plugins/nativephp/compose-ui" - }, - "mobile": { - "type": "path", - "url": "../mobile-air" - }, - "bg": { - "type": "path", - "url": "~/Herd/Plugins/nativephp/background-tasks" - }, - "timer": { - "type": "path", - "url": "~/Herd/Plugins/nativephp/timer" - }, - "debug": { - "type": "path", - "url": "~/Herd/Plugins/nativephp/debug-log" - }, - "skia": { - "type": "path", - "url": "~/Herd/Plugins/nativephp/skia-canvas" - } }, "license": "MIT", "require": { @@ -40,10 +16,8 @@ "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": "*", + "nativephp/mobile": "dev-element", "nativephp/mobile-device": "^1.0", "nativephp/mobile-dialog": "^1.0" }, diff --git a/composer.lock b/composer.lock index 3383ad0..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": "1740b19c6f0802b3771a78c45225e379", + "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,63 +2486,19 @@ ], "time": "2026-01-02T08:56:05+00:00" }, - { - "name": "nativephp/compose-ui", - "version": "dev-main", - "dist": { - "type": "path", - "url": "/Users/shanerosenthal/Herd/Plugins/nativephp/compose-ui", - "reference": "a856b51c50e15ebec3d6b3ee40e58de3a27cbad3" - }, - "require": { - "nativephp/mobile": "*", - "php": "^8.2" - }, - "require-dev": { - "pestphp/pest": "^3.0" - }, - "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", - "transport-options": { - "relative": false - } - }, { "name": "nativephp/mobile", - "version": "dev-element-yoga", + "version": "dev-element", + "source": { + "type": "git", + "url": "https://github.com/NativePHP/mobile-air.git", + "reference": "8b28b68ae4f5ac9de66b7355adac9140cf0b7529" + }, "dist": { - "type": "path", - "url": "../mobile-air", - "reference": "967beffa6d7c6b711d6ca40434ba01530178b27e" + "type": "zip", + "url": "https://api.github.com/repos/NativePHP/mobile-air/zipball/8b28b68ae4f5ac9de66b7355adac9140cf0b7529", + "reference": "8b28b68ae4f5ac9de66b7355adac9140cf0b7529", + "shasum": "" }, "require": { "endroid/qr-code": "^5.0", @@ -2648,33 +2539,7 @@ "Native\\Mobile\\": "src/" } }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "scripts": { - "qa": [ - "@composer format", - "@composer analyse", - "@composer test" - ], - "post-autoload-dump": [ - "@php ./vendor/bin/testbench package:discover --ansi" - ], - "analyse": [ - "vendor/bin/phpstan analyse" - ], - "test": [ - "vendor/bin/pest" - ], - "test-coverage": [ - "vendor/bin/pest --coverage" - ], - "format": [ - "vendor/bin/pint" - ] - }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2698,22 +2563,24 @@ "laravel", "nativephp" ], - "transport-options": { - "relative": true - } + "support": { + "issues": "https://github.com/NativePHP/mobile-air/issues", + "source": "https://github.com/NativePHP/mobile-air/tree/element" + }, + "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": { @@ -2743,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", @@ -2800,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": { @@ -2901,7 +2768,7 @@ "type": "tidelift" } ], - "time": "2026-01-29T09:26:29+00:00" + "time": "2026-03-11T17:23:39+00:00" }, { "name": "nette/schema", @@ -7745,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": { @@ -7807,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": { @@ -7880,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", @@ -7964,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": { @@ -7984,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" @@ -8027,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", @@ -8394,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", @@ -8428,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" @@ -8494,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": [ { @@ -8506,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", @@ -10845,7 +10713,9 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": {}, + "stability-flags": { + "nativephp/mobile": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": {