diff --git a/resources/css/app.css b/resources/css/app.css index 43eec39f..acd32d21 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -8,6 +8,21 @@ } } +@keyframes shine { + 0% { + background-position: 200% 50%; + } + 100% { + background-position: 0% 50%; + } +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + /* Scrollbar width */ ::-webkit-scrollbar { height: 8px; diff --git a/resources/views/article.blade.php b/resources/views/article.blade.php new file mode 100644 index 00000000..08b2845f --- /dev/null +++ b/resources/views/article.blade.php @@ -0,0 +1,217 @@ + + {{-- Hero --}} +
+
+ {{-- Blurred circle - Decorative --}} + + + {{-- Back button --}} +
+ + +
+ + {{-- Primary Heading --}} +

+ NativePHP for desktop v1 is finally here! +

+ + {{-- Date --}} +
+
+
+ + {{-- Divider --}} + + + {{-- Content --}} +
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Pariatur + facere dolore praesentium eius amet ex suscipit quam quibusdam + rerum, ratione, veritatis quidem, repudiandae ipsum in. Dolore + voluptatibus iusto saepe cum. Maiores tenetur nobis aliquid + recusandae hic, illo, aliquam laudantium aspernatur iste commodi + temporibus vero maxime, deserunt consequuntur fugiat animi dicta + debitis alias quos amet facere repellendus? Nesciunt, fugiat? Vel, + harum. Eos magnam, totam blanditiis nemo facilis culpa voluptate sed + dolores delectus alias velit, deleniti ex id quasi. Maiores + laboriosam repellendus vitae aliquam voluptas delectus deserunt + provident. Saepe, ullam. Error, ipsam. Facere dolore ullam + reprehenderit debitis et aperiam exercitationem numquam deserunt? + Temporibus asperiores exercitationem commodi vel? Autem, optio? + Tempora, dicta, pariatur dolores repudiandae corrupti beatae + voluptate dignissimos omnis consectetur ratione rerum. + Exercitationem eligendi, sint necessitatibus cumque voluptatum + corrupti incidunt inventore natus cupiditate, obcaecati nisi unde + nesciunt commodi! Eveniet itaque nihil ducimus repellendus et atque + laborum quos? Nostrum, aperiam aut. Ratione, earum! Voluptate + deleniti labore dolor quod nobis atque nam repellendus? Fugiat, + aliquam voluptatum quam cum, veniam mollitia, autem consequatur + officiis dolorem assumenda tempore. Distinctio officiis numquam + omnis quos aperiam minima voluptatibus? Magnam laborum nesciunt eos + qui sed repellendus tenetur harum, id, mollitia a provident + accusantium sint architecto, laudantium sit dolore quia. Vel impedit + quasi nam necessitatibus accusantium saepe praesentium laudantium + ut. Sit dolor voluptas dignissimos doloremque qui atque dolorum. + Aperiam eaque sapiente dicta nulla error laborum eius ex illum + harum, dolor quae illo praesentium ad hic at dolorem iusto + recusandae unde. Ipsa alias tenetur magni reprehenderit nam + consequuntur pariatur consequatur quas aspernatur cumque harum ullam + asperiores corporis distinctio consectetur dicta iusto, iure rem + quos nobis laboriosam eos nulla accusamus et. Similique. Consectetur + hic vel explicabo id assumenda, dolores quos neque asperiores ut, + aperiam a blanditiis est, ullam officia cum error eligendi delectus! + Cupiditate iusto est ad. Magni porro blanditiis quo delectus! + Possimus quis repellat aliquam, quia repudiandae deserunt ipsum + laudantium quaerat impedit veniam quibusdam rerum libero! Nam + laboriosam qui blanditiis nihil soluta, magnam ut fuga voluptatem + voluptatibus doloremque aut, aliquam velit? Soluta in esse dolorem + harum excepturi incidunt qui omnis quidem perferendis, alias culpa + ipsa quaerat delectus quam dolores nulla inventore dicta rerum enim + obcaecati. Officia esse nostrum voluptate mollitia corporis. Numquam + exercitationem fuga debitis soluta. Accusantium a voluptatum + reprehenderit, perferendis dolorum sequi ab consequatur molestiae + necessitatibus consequuntur asperiores expedita? Corporis vel fugiat + distinctio sint magnam eveniet facilis. Corrupti, quisquam + perferendis. Architecto recusandae dolores aspernatur eligendi + laborum iure libero sit vitae optio error cupiditate illo magnam + harum quam, porro debitis repellendus quis iusto nemo, atque nobis + aliquam consequatur? Quo, saepe repudiandae. Rem nostrum quos illo + eos cupiditate culpa eum dolorem debitis odit accusantium quibusdam + eligendi ea quisquam, nam beatae, nihil vitae mollitia totam laborum + necessitatibus veritatis porro error molestias. Exercitationem, + soluta. Eaque suscipit amet impedit illum hic rerum nesciunt. Totam + culpa, quia fuga at blanditiis dolorum rerum iusto ipsa quae + distinctio a placeat dolorem omnis praesentium libero obcaecati + molestiae porro aliquid. Accusantium itaque rerum nobis, quam, non + numquam animi qui cupiditate repellendus repellat veritatis pariatur + expedita debitis veniam beatae rem dicta vel vitae, eaque eos + placeat. Consequatur, facilis commodi. Soluta, incidunt. Beatae + nobis nesciunt quis reiciendis? Velit voluptatum et placeat + accusantium illo suscipit id dolorum cupiditate rem fugiat! Libero + esse, ad dolorum commodi officiis incidunt enim corrupti, fuga + beatae aspernatur expedita? Earum rerum laborum dolore architecto? + Culpa vitae at ipsum sapiente? Labore aliquid, dolor optio voluptas + mollitia recusandae quas sequi tempora corporis. Ipsa voluptate + fugiat omnis perferendis deserunt, itaque quos perspiciatis. + Asperiores explicabo dolore, molestiae, consequatur sint soluta + vitae quae iure reprehenderit hic officia aliquid omnis reiciendis + voluptatibus tempora provident veniam in magni eum et exercitationem + doloribus ullam. Neque, culpa temporibus. +
+
+
diff --git a/resources/views/blog.blade.php b/resources/views/blog.blade.php new file mode 100644 index 00000000..a70b8bc9 --- /dev/null +++ b/resources/views/blog.blade.php @@ -0,0 +1,211 @@ + + {{-- Hero --}} +
+
+ {{-- Primary Heading --}} +

+ Blog +

+ + {{-- Introduction Description --}} +

+ Welcome to our blog! Here, we share insights, updates, and + stories from our community. Stay tuned for the latest news and + articles. +

+ + {{-- Blurred circle - Decorative --}} + + + {{-- Blurred circle - Decorative --}} + +
+
+ + {{-- Articles --}} +
+ {{-- Semantic heading for section (visually hidden) --}} +

+ Blog Articles +

+ + {{-- List --}} +
+ + 🎉 WE DID IT! We finally got to v1. I almost don't believe it! + This is an awesome milestone. For a project that started as just + an idea, to see it reach a truly stable place and support + building powerful apps across all major platforms is just + incredible. + + + Hey team, this is just a quick note about Laravel version + support. Per our Support Policy matrix, we will be dropping + Laravel 10 support for NativePHP for desktop v1. Laravel 10 + reached end of life back in February 2025. + + + Earlier this week I spoke at the Laravel Worldwide Meetup where + I unveiled: 🌐 A brand new nativephp.com, lovingly (and + painstakingly!) crafted by the incredible + @HassanZahirnia + +
+ + {{-- Pagination --}} + +
+
diff --git a/resources/views/components/alert-v1-announcement.blade.php b/resources/views/components/alert-v1-announcement.blade.php new file mode 100644 index 00000000..529bff35 --- /dev/null +++ b/resources/views/components/alert-v1-announcement.blade.php @@ -0,0 +1,269 @@ + diff --git a/resources/views/components/article-card.blade.php b/resources/views/components/article-card.blade.php new file mode 100644 index 00000000..3eea9265 --- /dev/null +++ b/resources/views/components/article-card.blade.php @@ -0,0 +1,59 @@ +@props([ + 'title' => '', + 'url' => '#', + 'date' => null, +]) + + +
+ {{-- Header --}} +
+ {{-- Title --}} +

+ {{ $title }} +

+ + {{-- Arrow --}} +
+ +
+ {{-- Date --}} + @if ($date) + @php + $dateObject = \Carbon\Carbon::parse($date); + $formattedDate = $dateObject->format('F j, Y'); + @endphp + + + @endif + + {{-- Content --}} +

+ {{ $slot }} +

+
+ + {{-- Blur decoration --}} +
+
+
diff --git a/resources/views/components/eap-banner.blade.php b/resources/views/components/eap-banner.blade.php index d9e514bc..4dd9e4e5 100644 --- a/resources/views/components/eap-banner.blade.php +++ b/resources/views/components/eap-banner.blade.php @@ -3,16 +3,6 @@ onclick="fathom.trackEvent('alert_click');" class="group relative z-30 flex items-center justify-center gap-2 bg-gradient-to-r from-[#352F5B] to-[#6056AA] px-5 py-2.5 text-center" > - {{-- Text --}}
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/components/icons/confetti.blade.php b/resources/views/components/icons/confetti.blade.php new file mode 100644 index 00000000..456c7822 --- /dev/null +++ b/resources/views/components/icons/confetti.blade.php @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/resources/views/components/icons/date.blade.php b/resources/views/components/icons/date.blade.php new file mode 100644 index 00000000..c2fe28ee --- /dev/null +++ b/resources/views/components/icons/date.blade.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + diff --git a/resources/views/components/navigation-bar.blade.php b/resources/views/components/navigation-bar.blade.php index d4c554d2..443110a3 100644 --- a/resources/views/components/navigation-bar.blade.php +++ b/resources/views/components/navigation-bar.blade.php @@ -27,15 +27,58 @@ class="mx-auto flex w-full max-w-5xl items-center justify-between gap-5 rounded- NativePHP + {{-- V1 Announcement --}} + + + {{-- 👇 Temporarily disabled in favor of the v1 announcement button --}} {{-- Version badge --}} - +
+ --}} {{-- Right side --}} @@ -145,6 +188,26 @@ class="hidden size-[3px] rotate-45 rounded-sm bg-gray-400 transition duration-20 aria-hidden="true" > + {{-- Link + request()->routeIs('blog*'), + 'opacity-60 hover:opacity-100' => ! request()->routeIs('blog*'), + ]) + aria-current="{{ request()->routeIs('blog*') ? 'page' : 'false' }}" + > + Blog + + + {{-- Decorative circle -- }} + + --}} + {{-- Link --}} + + {{-- Table of contents --}}

diff --git a/routes/web.php b/routes/web.php index 4c1d00c9..a45a03c8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -19,6 +19,8 @@ Route::redirect('/sponsor', '/docs/1/getting-started/sponsoring'); Route::view('/', 'welcome')->name('welcome'); +Route::view('/blog', 'blog')->name('blog'); +Route::view('/article', 'article')->name('article'); Route::view('mobile', 'early-adopter')->name('early-adopter'); Route::redirect('ios', 'mobile');