This commit is contained in:
2023-11-24 20:49:19 +08:00
parent ca5219cb93
commit be14f5fdb1
65 changed files with 1991 additions and 2214 deletions

BIN
resources/.DS_Store vendored

Binary file not shown.

View File

@@ -1,4 +1,4 @@
const Ziggy = {"url":"https:\/\/productalert.co","port":null,"defaults":{},"routes":{"debugbar.openhandler":{"uri":"_debugbar\/open","methods":["GET","HEAD"]},"debugbar.clockwork":{"uri":"_debugbar\/clockwork\/{id}","methods":["GET","HEAD"]},"debugbar.assets.css":{"uri":"_debugbar\/assets\/stylesheets","methods":["GET","HEAD"]},"debugbar.assets.js":{"uri":"_debugbar\/assets\/javascript","methods":["GET","HEAD"]},"debugbar.cache.delete":{"uri":"_debugbar\/cache\/{key}\/{tags?}","methods":["DELETE"]},"sanctum.csrf-cookie":{"uri":"sanctum\/csrf-cookie","methods":["GET","HEAD"]},"ignition.healthCheck":{"uri":"_ignition\/health-check","methods":["GET","HEAD"]},"ignition.executeSolution":{"uri":"_ignition\/execute-solution","methods":["POST"]},"ignition.updateConfig":{"uri":"_ignition\/update-config","methods":["POST"]},"api.auth.login.post":{"uri":"api\/login","methods":["POST"]},"api.auth.logout.post":{"uri":"api\/logout","methods":["POST"]},"api.admin.post.get":{"uri":"api\/admin\/post\/{id}","methods":["GET","HEAD"]},"api.admin.country-locales":{"uri":"api\/admin\/country-locales","methods":["GET","HEAD"]},"api.admin.categories":{"uri":"api\/admin\/categories\/{country_locale_slug}","methods":["GET","HEAD"]},"api.admin.authors":{"uri":"api\/admin\/authors","methods":["GET","HEAD"]},"api.admin.upload.cloud.image":{"uri":"api\/admin\/image\/upload","methods":["POST"]},"api.admin.post.upsert":{"uri":"api\/admin\/admin\/post\/upsert","methods":["POST"]},"feeds.main":{"uri":"posts.rss","methods":["GET","HEAD"]},"login":{"uri":"login","methods":["GET","HEAD"]},"logout":{"uri":"logout","methods":["POST"]},"register":{"uri":"register","methods":["GET","HEAD"]},"password.request":{"uri":"password\/reset","methods":["GET","HEAD"]},"password.email":{"uri":"password\/email","methods":["POST"]},"password.reset":{"uri":"password\/reset\/{token}","methods":["GET","HEAD"]},"password.update":{"uri":"password\/reset","methods":["POST"]},"password.confirm":{"uri":"password\/confirm","methods":["GET","HEAD"]},"dashboard":{"uri":"admin","methods":["GET","HEAD"]},"admin.changelog":{"uri":"admin\/changelog","methods":["GET","HEAD"]},"about":{"uri":"admin\/about","methods":["GET","HEAD"]},"users.index":{"uri":"admin\/users","methods":["GET","HEAD"]},"posts.manage":{"uri":"admin\/posts","methods":["GET","HEAD"]},"posts.manage.edit":{"uri":"admin\/posts\/edit\/{post_id}","methods":["GET","HEAD"]},"posts.manage.delete":{"uri":"admin\/posts\/delete\/{post_id}","methods":["GET","HEAD"]},"posts.manage.indexing":{"uri":"admin\/posts\/indexing\/{post_id}","methods":["GET","HEAD"]},"posts.manage.new":{"uri":"admin\/posts\/new","methods":["GET","HEAD"]},"profile.show":{"uri":"admin\/profile","methods":["GET","HEAD"]},"profile.update":{"uri":"admin\/profile","methods":["PUT"]},"home":{"uri":"\/","methods":["GET","HEAD"]},"home.country":{"uri":"{country}","methods":["GET","HEAD"]},"home.country.posts":{"uri":"{country}\/posts","methods":["GET","HEAD"]},"home.country.post":{"uri":"{country}\/posts\/{post_slug}","methods":["GET","HEAD"]},"home.country.category":{"uri":"{country}\/{category}","methods":["GET","HEAD"]}}};
const Ziggy = {"url":"https:\/\/aibuddytool.test","port":null,"defaults":{},"routes":{"debugbar.openhandler":{"uri":"_debugbar\/open","methods":["GET","HEAD"]},"debugbar.clockwork":{"uri":"_debugbar\/clockwork\/{id}","methods":["GET","HEAD"]},"debugbar.assets.css":{"uri":"_debugbar\/assets\/stylesheets","methods":["GET","HEAD"]},"debugbar.assets.js":{"uri":"_debugbar\/assets\/javascript","methods":["GET","HEAD"]},"debugbar.cache.delete":{"uri":"_debugbar\/cache\/{key}\/{tags?}","methods":["DELETE"]},"sanctum.csrf-cookie":{"uri":"sanctum\/csrf-cookie","methods":["GET","HEAD"]},"ignition.healthCheck":{"uri":"_ignition\/health-check","methods":["GET","HEAD"]},"ignition.executeSolution":{"uri":"_ignition\/execute-solution","methods":["POST"]},"ignition.updateConfig":{"uri":"_ignition\/update-config","methods":["POST"]},"api.auth.login.post":{"uri":"api\/login","methods":["POST"]},"api.auth.logout.post":{"uri":"api\/logout","methods":["POST"]},"api.admin.post.get":{"uri":"api\/admin\/post\/{id}","methods":["GET","HEAD"]},"api.admin.country-locales":{"uri":"api\/admin\/country-locales","methods":["GET","HEAD"]},"api.admin.categories":{"uri":"api\/admin\/categories\/{country_locale_slug}","methods":["GET","HEAD"]},"api.admin.authors":{"uri":"api\/admin\/authors","methods":["GET","HEAD"]},"api.admin.upload.cloud.image":{"uri":"api\/admin\/image\/upload","methods":["POST"]},"api.admin.post.upsert":{"uri":"api\/admin\/admin\/post\/upsert","methods":["POST"]},"feeds.main":{"uri":"posts.rss","methods":["GET","HEAD"]},"login":{"uri":"login","methods":["GET","HEAD"]},"logout":{"uri":"logout","methods":["POST"]},"register":{"uri":"register","methods":["GET","HEAD"]},"password.request":{"uri":"password\/reset","methods":["GET","HEAD"]},"password.email":{"uri":"password\/email","methods":["POST"]},"password.reset":{"uri":"password\/reset\/{token}","methods":["GET","HEAD"]},"password.update":{"uri":"password\/reset","methods":["POST"]},"password.confirm":{"uri":"password\/confirm","methods":["GET","HEAD"]},"dashboard":{"uri":"admin","methods":["GET","HEAD"]},"admin.changelog":{"uri":"admin\/changelog","methods":["GET","HEAD"]},"about":{"uri":"admin\/about","methods":["GET","HEAD"]},"users.index":{"uri":"admin\/users","methods":["GET","HEAD"]},"posts.manage":{"uri":"admin\/posts","methods":["GET","HEAD"]},"posts.manage.edit":{"uri":"admin\/posts\/edit\/{post_id}","methods":["GET","HEAD"]},"posts.manage.delete":{"uri":"admin\/posts\/delete\/{post_id}","methods":["GET","HEAD"]},"posts.manage.indexing":{"uri":"admin\/posts\/indexing\/{post_id}","methods":["GET","HEAD"]},"posts.manage.new":{"uri":"admin\/posts\/new","methods":["GET","HEAD"]},"profile.show":{"uri":"admin\/profile","methods":["GET","HEAD"]},"profile.update":{"uri":"admin\/profile","methods":["PUT"]},"home":{"uri":"\/","methods":["GET","HEAD"]}}};
if (typeof window !== 'undefined' && typeof window.Ziggy !== 'undefined') {
Object.assign(Ziggy.routes, window.Ziggy.routes);

View File

@@ -30,7 +30,7 @@ $grays: (
"600": $gray-600,
"700": $gray-700,
"800": $gray-800,
"900": $gray-900
"900": $gray-900,
);
// scss-docs-end gray-colors-map
// fusv-enable
@@ -63,7 +63,7 @@ $colors: (
"black": $black,
"white": $white,
"gray": $gray-600,
"gray-dark": $gray-800
"gray-dark": $gray-800,
);
// scss-docs-end colors-map
@@ -185,7 +185,7 @@ $blues: (
"blue-600": $blue-600,
"blue-700": $blue-700,
"blue-800": $blue-800,
"blue-900": $blue-900
"blue-900": $blue-900,
);
$indigos: (
@@ -197,7 +197,7 @@ $indigos: (
"indigo-600": $indigo-600,
"indigo-700": $indigo-700,
"indigo-800": $indigo-800,
"indigo-900": $indigo-900
"indigo-900": $indigo-900,
);
$purples: (
@@ -209,7 +209,7 @@ $purples: (
"purple-600": $purple-600,
"purple-700": $purple-700,
"purple-800": $purple-800,
"purple-900": $purple-900
"purple-900": $purple-900,
);
$pinks: (
@@ -221,7 +221,7 @@ $pinks: (
"pink-600": $pink-600,
"pink-700": $pink-700,
"pink-800": $pink-800,
"pink-900": $pink-900
"pink-900": $pink-900,
);
$reds: (
@@ -233,7 +233,7 @@ $reds: (
"red-600": $red-600,
"red-700": $red-700,
"red-800": $red-800,
"red-900": $red-900
"red-900": $red-900,
);
$oranges: (
@@ -245,7 +245,7 @@ $oranges: (
"orange-600": $orange-600,
"orange-700": $orange-700,
"orange-800": $orange-800,
"orange-900": $orange-900
"orange-900": $orange-900,
);
$yellows: (
@@ -257,7 +257,7 @@ $yellows: (
"yellow-600": $yellow-600,
"yellow-700": $yellow-700,
"yellow-800": $yellow-800,
"yellow-900": $yellow-900
"yellow-900": $yellow-900,
);
$greens: (
@@ -269,7 +269,7 @@ $greens: (
"green-600": $green-600,
"green-700": $green-700,
"green-800": $green-800,
"green-900": $green-900
"green-900": $green-900,
);
$teals: (
@@ -281,7 +281,7 @@ $teals: (
"teal-600": $teal-600,
"teal-700": $teal-700,
"teal-800": $teal-800,
"teal-900": $teal-900
"teal-900": $teal-900,
);
$cyans: (
@@ -293,12 +293,12 @@ $cyans: (
"cyan-600": $cyan-600,
"cyan-700": $cyan-700,
"cyan-800": $cyan-800,
"cyan-900": $cyan-900
"cyan-900": $cyan-900,
);
// fusv-enable
// scss-docs-start theme-color-variables
$primary: $red;
$primary: $blue;
$secondary: $gray-600;
$success: $green;
$info: $cyan;
@@ -317,6 +317,6 @@ $theme-colors: (
"warning": $warning,
"danger": $danger,
"light": $light,
"dark": $dark
"dark": $dark,
);
// scss-docs-end theme-colors-map

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,52 @@
@extends('layouts.front.app')
@section('content')
<div class="container-lg py-3">
<div class="row justify-content-center text-center">
<div class="col-12 col-md-8 col-lg-6 col-xl-5">
<h2>Find the perfect AI tool for every task</h2>
<p>Elevate productivity with XXX+ AI tools & growing 🚀</p>
<br>
<form class="d-flex" role="search">
<input class="rounded-pill form-control me-2" type="search" placeholder="Search" aria-label="Search"
control-id="ControlID-1">
<button class="rounded-pill btn btn-primary px-4 fw-bold" type="submit" control-id="ControlID-2">
<span class=" mb-0">Search</span>
</button>
</form>
<br>
</div>
</div>
<div class="row justify-content-center mb-4">
<div class="col-12 col-md-10 col-lg-9 col-xl-8 text-center">
<span class="fw-bold">Explore AI Tools: </span>
@for ($i = 1; $i <= 20; $i++)
<a href="#"
class="btn btn-outline-primary border-1 fw-bold border-primary rounded-pill px-3 btn-sm mb-1">Category
{{ $i }}</a>
@endfor
</div>
</div>
<h3 class="text-center fw-bold">Latest AI Tools</h3>
<div class="row justify-content-center g-3 mb-4">
@for ($i = 1; $i <= 8; $i++)
<div class="col-12 col-md-6 col-lg-4">
<div class="card">
<img src="https://placekitten.com/1024/576" class="card-img-top" alt="...">
<div class="card-body">
<h4 class="fw-bold"><a href="#">AI Tool {{ $i }}</a></h4>
<p>Template Prompts is a private AI prompts library that allows templates so you can reuse
prompts acro..</p>
</div>
</div>
</div>
@endfor
</div>
<div class="w-100 text-center">
<a href="#" class="btn btn-primary rounded-pill px-4">Explore XXXX+ AI Tools</a>
</div>
</div>
@endsection

Binary file not shown.

View File

@@ -18,7 +18,7 @@
<link rel="apple-touch-icon" sizes="180x180" href="{{ asset('apple-touch-icon.png') }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ asset('favicon-32x32.png') }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ asset('favicon-16x16.png') }}">
<link rel="manifest" href="{{ asset('site.webmanifest')}}">
<link rel="manifest" href="{{ asset('site.webmanifest') }}">
@vite('resources/sass/front-app.scss')

View File

@@ -1,69 +1,7 @@
<div class="container-fluid border-top">
<footer class="py-5 container">
<div class="row justify-content-center">
<div class="col-6 col-md-2 mb-3">
<ul class="nav flex-column">
@foreach ($categories as $category)
@if ($category->id % 2 == 0)
<li class="nav-item mb-2">
<a class="nav-link p-0 text-body-secondary"
href="{{ route('home.country.category', ['country' => $category->country_locale_slug, 'category' => $category->slug]) }}">{{ $category->name }}</a>
</li>
@endif
@endforeach
</ul>
</div>
<footer class="container-lg">
<div class="col-6 col-md-2 mb-3">
<ul class="nav flex-column">
@foreach ($categories as $category)
@if ($category->id % 2 == 1)
<li class="nav-item mb-2">
<a class="nav-link p-0 text-body-secondary"
href="{{ route('home.country.category', ['country' => $category->country_locale_slug, 'category' => $category->slug]) }}">{{ $category->name }}</a>
</li>
@endif
@endforeach
</ul>
</div>
<div class="col-md-5 mb-3">
@if ($country_locales->count() > 1)
<div class="dropdown mb-4">
<button class="btn btn-outline-primary dropdown-toggle" type="button" id="dropdownMenuSwitch"
data-bs-toggle="dropdown" aria-expanded="false">
{{ $current_country_locale->name }}
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuSwitch">
@foreach ($country_locales as $country_locale)
@if ($country_locale->id != $current_country_locale->id)
<li><a class="dropdown-item"
href="{{ route('home.country', [
'country' => $country_locale->slug,
]) }}">{{ $country_locale->name }}</a>
</li>
@endif
@endforeach
</ul>
</div>
@endif
{{-- <form>
<h5>Subscribe to our newsletter</h5>
<p>Monthly digest of what's new and exciting from us.</p>
<div class="d-flex flex-column flex-sm-row w-100 gap-2">
<label for="newsletter1" class="visually-hidden">Email address</label>
<input id="newsletter1" type="disabled" class="form-control disabled" placeholder="Email address">
<button class="btn btn-primary" type="button">Subscribe</button>
</div>
</form> --}}
</div>
</div>
<div class="d-flex flex-column flex-sm-row justify-content-center py-4 my-4">
<div class="d-flex flex-column flex-sm-row justify-content-center pt-3">
<p>© {{ date('Y') }} {{ config('app.name') }}. All rights reserved.</p>
{{-- <ul class="list-unstyled d-flex">
<li class="ms-3"><a class="link-body-emphasis" href="#"><svg class="bi" width="24"

View File

@@ -1,84 +1,13 @@
<div class="container-fluid border-bottom">
<header class="d-flex flex-wrap align-items-center justify-content-center justify-content-md-between py-3">
<div class="col-md-3 mb-2 mb-md-0">
<button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar"
aria-controls="offcanvasNavbar" aria-label="Toggle navigation">
<i class="h4 bi bi-list"></i>
</button>
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasNavbar"
aria-labelledby="offcanvasNavbarLabel">
<div class="offcanvas-header">
<h4 class="offcanvas-title fw-bold mb-0" id="offcanvasNavbarLabel">
{{ config('app.name') }}
{{ str_contains(request()->route()->getName(),'home.country')? get_country_emoji_by_iso($current_country_locale->country_iso): '' }}
</h4>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body p-0">
<header class="d-flex flex-wrap align-items-center justify-content-center py-3">
<div class="col-auto">
@if ($country_locales->count() > 1)
<div class="p-3">
<div class="dropdown d-grid">
<button class="btn btn-outline-primary dropdown-toggle" type="button"
id="dropdownMenuSwitch" data-bs-toggle="dropdown" aria-expanded="false">
{{ $current_country_locale->name }}
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuSwitch">
@foreach ($country_locales as $country_locale)
@if ($country_locale->id != $current_country_locale->id)
<li><a class="dropdown-item"
href="{{ route('home.country', [
'country' => $country_locale->slug,
]) }}">{{ $country_locale->name }}</a>
</li>
@endif
@endforeach
</ul>
</div>
</div>
<div class="border-bottom"></div>
@endif
<div class="p-3">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item">
<a class="nav-link active" aria-current="page"
href="{{ route('home.country', ['country' => $current_country_locale->slug]) }}">Home</a>
</li>
@foreach ($categories as $category)
<li class="nav-item">
<a class="nav-link active" aria-current="page"
href="{{ route('home.country.category', ['country' => $category->country_locale_slug, 'category' => $category->slug]) }}">{{ $category->name }}</a>
</li>
@endforeach
</ul>
</div>
</div>
</div>
<a href="/" class="d-inline-flex link-body-emphasis text-decoration-none">
<a href="/" class="d-inline-flex link-body-emphasis text-decoration-none text-center">
<h1 class="h4 mb-0 fw-bold">
{{ config('app.name') }}
{{ str_contains(request()->route()->getName(),'home.country')? get_country_emoji_by_iso($current_country_locale->country_iso): '' }}
</h1>
</a>
</div>
<ul class="nav col-12 col-md-auto mb-2 justify-content-center mb-md-0">
@foreach ($categories as $category)
@if ($category->is_top)
<li><a href="{{ route('home.country.category', ['country' => $category->country_locale_slug, 'category' => $category->slug]) }}"
class="nav-link px-2 link-secondary">{{ $category->short_name }}</a></li>
@endif
@endforeach
</ul>
<div class="col-md-3 text-end">
</div>
</header>
</div>