Update (all): fix php formatting using laravel pint, fix blade using shufo

This commit is contained in:
2023-07-25 22:18:01 +08:00
parent 6adc27076d
commit 82353c1ecd
37 changed files with 536 additions and 480 deletions

View File

@@ -43,4 +43,4 @@ function get_current_ip()
return $ip_add_set[0]; return $ip_add_set[0];
} }
} }

View File

@@ -1,5 +1,4 @@
<?php <?php
require 'string_helper.php'; require 'string_helper.php';
require 'geo_helper.php'; require 'geo_helper.php';

View File

@@ -5,7 +5,6 @@
* A better function to check if a value is empty or null. Strings, arrays, and Objects are supported. * A better function to check if a value is empty or null. Strings, arrays, and Objects are supported.
* *
* @param mixed $value * @param mixed $value
* @return bool
*/ */
function is_empty($value): bool function is_empty($value): bool
{ {

View File

@@ -4,9 +4,6 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class DashboardController extends Controller class DashboardController extends Controller
{ {
/** /**

View File

@@ -3,9 +3,8 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use App\Http\Requests\ProfileUpdateRequest; use App\Http\Requests\ProfileUpdateRequest;
use Illuminate\Support\Facades\Hash;
class ProfileController extends Controller class ProfileController extends Controller
{ {

View File

@@ -3,7 +3,6 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\User; use App\Models\User;
class UserController extends Controller class UserController extends Controller

View File

@@ -3,8 +3,8 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\Models\User; use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
@@ -44,7 +44,6 @@ public function __construct()
/** /**
* Get a validator for an incoming registration request. * Get a validator for an incoming registration request.
* *
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator * @return \Illuminate\Contracts\Validation\Validator
*/ */
protected function validator(array $data) protected function validator(array $data)
@@ -59,7 +58,6 @@ protected function validator(array $data)
/** /**
* Create a new user instance after a valid registration. * Create a new user instance after a valid registration.
* *
* @param array $data
* @return \App\Models\User * @return \App\Models\User
*/ */
protected function create(array $data) protected function create(array $data)

View File

@@ -3,32 +3,27 @@
namespace App\Http\Controllers\Front; namespace App\Http\Controllers\Front;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Stevebauman\Location\Facades\Location;
use App\Models\Category; use App\Models\Category;
use App\Models\CountryLocale; use App\Models\CountryLocale;
use Illuminate\Http\Request;
class HomeController extends Controller class HomeController extends Controller
{ {
public function index(Request $request) public function index(Request $request)
{ {
return redirect()->route('home.country', ['country' => 'my']); return redirect()->route('home.country', ['country' => 'my']);
} }
public function country(Request $request, $country) public function country(Request $request, $country)
{ {
$country = CountryLocale::where('slug', $country)->first(); $country = CountryLocale::where('slug', $country)->first();
if (!is_null($country)) if (! is_null($country)) {
{ $categories = Category::where('country_locale_id', $country->id)->get();
$categories = Category::where('country_locale_id', $country->id)->get();
return view('front.country', ['categories' => $categories, 'country' => $country]); return view('front.country', ['categories' => $categories, 'country' => $country]);
} }
return redirect()->route('home.country', ['country' => 'my']); return redirect()->route('home.country', ['country' => 'my']);
} }
} }

View File

@@ -2,9 +2,9 @@
namespace App\Http\Requests; namespace App\Http\Requests;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class ProfileUpdateRequest extends FormRequest class ProfileUpdateRequest extends FormRequest
{ {
@@ -28,4 +28,4 @@ protected function prepareForValidation()
$this->request->remove('password'); $this->request->remove('password');
} }
} }
} }

View File

@@ -12,7 +12,7 @@
/** /**
* Class Category * Class Category
* *
* @property int $id * @property int $id
* @property int $country_locale_id * @property int $country_locale_id
* @property string|null $name * @property string|null $name
@@ -26,39 +26,37 @@
* @property string|null $deleted_at * @property string|null $deleted_at
* @property Carbon|null $created_at * @property Carbon|null $created_at
* @property Carbon|null $updated_at * @property Carbon|null $updated_at
*
* @property CountryLocale $country_locale * @property CountryLocale $country_locale
*
* @package App\Models
*/ */
class Category extends Model class Category extends Model
{ {
use SoftDeletes; use SoftDeletes;
protected $table = 'categories';
protected $casts = [ protected $table = 'categories';
'country_locale_id' => 'int',
'enabled' => 'bool',
'is_top' => 'bool',
'_lft' => 'int',
'_rgt' => 'int',
'parent_id' => 'int'
];
protected $fillable = [ protected $casts = [
'country_locale_id', 'country_locale_id' => 'int',
'name', 'enabled' => 'bool',
'short_name', 'is_top' => 'bool',
'slug', '_lft' => 'int',
'enabled', '_rgt' => 'int',
'is_top', 'parent_id' => 'int',
'_lft', ];
'_rgt',
'parent_id'
];
public function country_locale() protected $fillable = [
{ 'country_locale_id',
return $this->belongsTo(CountryLocale::class); 'name',
} 'short_name',
'slug',
'enabled',
'is_top',
'_lft',
'_rgt',
'parent_id',
];
public function country_locale()
{
return $this->belongsTo(CountryLocale::class);
}
} }

View File

@@ -12,7 +12,7 @@
/** /**
* Class CountryLocale * Class CountryLocale
* *
* @property int $id * @property int $id
* @property string $name * @property string $name
* @property string $slug * @property string $slug
@@ -21,22 +21,21 @@
* @property string|null $deleted_at * @property string|null $deleted_at
* @property Carbon|null $created_at * @property Carbon|null $created_at
* @property Carbon|null $updated_at * @property Carbon|null $updated_at
*
* @package App\Models
*/ */
class CountryLocale extends Model class CountryLocale extends Model
{ {
use SoftDeletes; use SoftDeletes;
protected $table = 'country_locales';
protected $casts = [ protected $table = 'country_locales';
'enabled' => 'bool'
];
protected $fillable = [ protected $casts = [
'name', 'enabled' => 'bool',
'slug', ];
'i18n',
'enabled' protected $fillable = [
]; 'name',
'slug',
'i18n',
'enabled',
];
} }

View File

@@ -20,7 +20,7 @@
}, },
"require-dev": { "require-dev": {
"fakerphp/faker": "^1.9.1", "fakerphp/faker": "^1.9.1",
"laravel/pint": "^1.0", "laravel/pint": "^1.10",
"laravel/sail": "^1.18", "laravel/sail": "^1.18",
"laraveldaily/larastarters": "^2.3", "laraveldaily/larastarters": "^2.3",
"mockery/mockery": "^1.4.4", "mockery/mockery": "^1.4.4",

2
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "7c7dee8e0b413eb119aa5455e2d5a6ce", "content-hash": "d4622e7e11ee1dc87e72a4ec06a255f9",
"packages": [ "packages": [
{ {
"name": "artesaos/seotools", "name": "artesaos/seotools",

View File

@@ -416,7 +416,7 @@
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Move $fillable property to base files | Move $fillable property to base files
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| When base_files is true you can set fillable_in_base_files to true | When base_files is true you can set fillable_in_base_files to true
| if you want the $fillable to be generated in base files | if you want the $fillable to be generated in base files
| |
*/ */
@@ -489,18 +489,18 @@
| |
*/ */
// 'connections' => [ // 'connections' => [
// 'read_only_external' => [ // 'read_only_external' => [
// 'parent' => \App\Models\ReadOnlyModel::class, // 'parent' => \App\Models\ReadOnlyModel::class,
// 'connection' => true, // 'connection' => true,
// 'users' => [ // 'users' => [
// 'connection' => false, // 'connection' => false,
// ], // ],
// 'my_other_database' => [ // 'my_other_database' => [
// 'password_resets' => [ // 'password_resets' => [
// 'connection' => false, // 'connection' => false,
// ] // ]
// ] // ]
// ], // ],
// ], // ],
]; ];

View File

@@ -1,7 +1,7 @@
<?php <?php
return [ return [
'app_version' => '1.0.0', 'app_version' => '1.0.0',
'dev_default_ip' => env('DEV_DEFAULT_IP','127.0.0.1'), 'dev_default_ip' => env('DEV_DEFAULT_IP', '127.0.0.1'),
]; ];

View File

@@ -8,25 +8,25 @@
/* /*
* The default configurations to be used by the meta generator. * The default configurations to be used by the meta generator.
*/ */
'defaults' => [ 'defaults' => [
'title' => "It's Over 9000!", // set false to total remove 'title' => "It's Over 9000!", // set false to total remove
'titleBefore' => false, // Put defaults.title before page title, like 'It's Over 9000! - Dashboard' 'titleBefore' => false, // Put defaults.title before page title, like 'It's Over 9000! - Dashboard'
'description' => 'For those who helped create the Genki Dama', // set false to total remove 'description' => 'For those who helped create the Genki Dama', // set false to total remove
'separator' => ' - ', 'separator' => ' - ',
'keywords' => [], 'keywords' => [],
'canonical' => false, // Set to null or 'full' to use Url::full(), set to 'current' to use Url::current(), set false to total remove 'canonical' => false, // Set to null or 'full' to use Url::full(), set to 'current' to use Url::current(), set false to total remove
'robots' => false, // Set to 'all', 'none' or any combination of index/noindex and follow/nofollow 'robots' => false, // Set to 'all', 'none' or any combination of index/noindex and follow/nofollow
], ],
/* /*
* Webmaster tags are always added. * Webmaster tags are always added.
*/ */
'webmaster_tags' => [ 'webmaster_tags' => [
'google' => null, 'google' => null,
'bing' => null, 'bing' => null,
'alexa' => null, 'alexa' => null,
'pinterest' => null, 'pinterest' => null,
'yandex' => null, 'yandex' => null,
'norton' => null, 'norton' => null,
], ],
'add_notranslate_class' => false, 'add_notranslate_class' => false,
@@ -36,12 +36,12 @@
* The default configurations to be used by the opengraph generator. * The default configurations to be used by the opengraph generator.
*/ */
'defaults' => [ 'defaults' => [
'title' => 'Over 9000 Thousand!', // set false to total remove 'title' => 'Over 9000 Thousand!', // set false to total remove
'description' => 'For those who helped create the Genki Dama', // set false to total remove 'description' => 'For those who helped create the Genki Dama', // set false to total remove
'url' => false, // Set null for using Url::current(), set false to total remove 'url' => false, // Set null for using Url::current(), set false to total remove
'type' => false, 'type' => false,
'site_name' => false, 'site_name' => false,
'images' => [], 'images' => [],
], ],
], ],
'twitter' => [ 'twitter' => [
@@ -58,11 +58,11 @@
* The default configurations to be used by the json-ld generator. * The default configurations to be used by the json-ld generator.
*/ */
'defaults' => [ 'defaults' => [
'title' => 'Over 9000 Thousand!', // set false to total remove 'title' => 'Over 9000 Thousand!', // set false to total remove
'description' => 'For those who helped create the Genki Dama', // set false to total remove 'description' => 'For those who helped create the Genki Dama', // set false to total remove
'url' => false, // Set to null or 'full' to use Url::full(), set to 'current' to use Url::current(), set false to total remove 'url' => false, // Set to null or 'full' to use Url::full(), set to 'current' to use Url::current(), set false to total remove
'type' => 'WebPage', 'type' => 'WebPage',
'images' => [], 'images' => [],
], ],
], ],
]; ];

View File

@@ -1,11 +1,10 @@
<?php <?php
use App\Models\CountryLocale;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use App\Models\CountryLocale;
return new class extends Migration return new class extends Migration
{ {
/** /**

View File

@@ -1,13 +1,12 @@
@extends('layouts.admin.app') @extends('layouts.admin.app')
@section('custom_styles') @section('custom_styles')
@endsection @endsection
@section('content') @section('content')
<div class="page-body"> <div class="page-body">
<div class="container-xl"> <div class="container-xl">
<div class="alert alert-success"> <div class="alert alert-success">
<div class="alert-title"> <div class="alert-title">
{{ __('Welcome') }} {{ auth()->user()->name ?? null }} {{ __('Welcome') }} {{ auth()->user()->name ?? null }}
@@ -19,4 +18,4 @@
</div> </div>
</div> </div>
@endsection @endsection

View File

@@ -28,21 +28,21 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@foreach($users as $user) @foreach ($users as $user)
<tr> <tr>
<td>{{ $user->name }}</td> <td>{{ $user->name }}</td>
<td>{{ $user->email }}</td> <td>{{ $user->email }}</td>
<td>{{ $user->created_at }}</td> <td>{{ $user->created_at }}</td>
<td>{{ $user->updated_at->diffForhumans() }}</td> <td>{{ $user->updated_at->diffForhumans() }}</td>
</tr> </tr>
@endforeach @endforeach
</tbody> </tbody>
</table> </table>
</div> </div>
@if( $users->hasPages() ) @if ($users->hasPages())
<div class="card-footer pb-0"> <div class="card-footer pb-0">
{{ $users->links() }} {{ $users->links() }}
</div> </div>
@endif @endif
</div> </div>
</div> </div>

View File

@@ -9,9 +9,11 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('Email address') }}</label> <label class="form-label">{{ __('Email address') }}</label>
<input type="email" name="email" value="{{ old('email') }}" class="form-control @error('email') is-invalid @enderror" placeholder="{{ __('Enter email') }}" required autofocus tabindex="1"> <input type="email" name="email" value="{{ old('email') }}"
class="form-control @error('email') is-invalid @enderror" placeholder="{{ __('Enter email') }}" required
autofocus tabindex="1">
@error('email') @error('email')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
@@ -19,14 +21,15 @@
<label class="form-label"> <label class="form-label">
{{ __('Password') }} {{ __('Password') }}
@if (Route::has('password.request')) @if (Route::has('password.request'))
<span class="form-label-description"> <span class="form-label-description">
<a href="{{ route('password.request') }}" tabindex="5">{{ __('Forgot Password?') }}</a> <a href="{{ route('password.request') }}" tabindex="5">{{ __('Forgot Password?') }}</a>
</span> </span>
@endif @endif
</label> </label>
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{ __('Password') }}" required tabindex="2"> <input type="password" name="password" class="form-control @error('password') is-invalid @enderror"
placeholder="{{ __('Password') }}" required tabindex="2">
@error('password') @error('password')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
@@ -44,9 +47,8 @@
</form> </form>
@if (Route::has('register')) @if (Route::has('register'))
<div class="text-center text-muted mt-3"> <div class="text-center text-muted mt-3">
{{ __("Don't have account yet?") }} <a href="{{ route('register') }}" tabindex="-1">{{ __('Sign up') }}</a> {{ __("Don't have account yet?") }} <a href="{{ route('register') }}" tabindex="-1">{{ __('Sign up') }}</a>
</div> </div>
@endif @endif
@endsection @endsection

View File

@@ -13,14 +13,16 @@
<label class="form-label"> <label class="form-label">
{{ __('Password') }} {{ __('Password') }}
@if (Route::has('password.request')) @if (Route::has('password.request'))
<span class="form-label-description"> <span class="form-label-description">
<a href="{{ route('password.request') }}">{{ __('Forgot Password?') }}</a> <a href="{{ route('password.request') }}">{{ __('Forgot Password?') }}</a>
</span> </span>
@endif @endif
</label> </label>
<input type="password" name="password" class="form-control form-control-user @error('password') is-invalid @enderror" placeholder="{{ __('Enter Password') }}"> <input type="password" name="password"
class="form-control form-control-user @error('password') is-invalid @enderror"
placeholder="{{ __('Enter Password') }}">
@error('password') @error('password')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>

View File

@@ -1,11 +1,10 @@
@extends('layouts.admin.guest') @extends('layouts.admin.guest')
@section('content') @section('content')
@if (session('status')) @if (session('status'))
<div class="alert alert-success" role="alert"> <div class="alert alert-success" role="alert">
{{ session('status') }} {{ session('status') }}
</div> </div>
@endif @endif
<form class="card card-md" action="{{ route('password.email') }}" method="post" autocomplete="off"> <form class="card card-md" action="{{ route('password.email') }}" method="post" autocomplete="off">
@@ -14,16 +13,19 @@
<div class="card-body"> <div class="card-body">
<h2 class="card-title text-center mb-4">{{ __('Forgot password') }}</h2> <h2 class="card-title text-center mb-4">{{ __('Forgot password') }}</h2>
<p class="text-muted mb-4">{{ __('Enter your email address and your password will be reset and emailed to you.') }}</p> <p class="text-muted mb-4">
{{ __('Enter your email address and your password will be reset and emailed to you.') }}</p>
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('Email address') }}</label> <label class="form-label">{{ __('Email address') }}</label>
<input type="email" name="email" value="{{ old('email') }}" class="form-control form-control-user @error('email') is-invalid @enderror" placeholder="{{ __('Enter Email Address...') }}"> <input type="email" name="email" value="{{ old('email') }}"
class="form-control form-control-user @error('email') is-invalid @enderror"
placeholder="{{ __('Enter Email Address...') }}">
@error('email') @error('email')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
<div class="form-footer"> <div class="form-footer">
<button type="submit" class="btn btn-primary w-100"> <button type="submit" class="btn btn-primary w-100">
{{ __('Reset My Password') }} {{ __('Reset My Password') }}
@@ -33,9 +35,8 @@
</form> </form>
@if (Route::has('login')) @if (Route::has('login'))
<div class="text-center text-muted mt-3"> <div class="text-center text-muted mt-3">
{{ __('Already have account?') }} <a href="{{ route('login') }}" tabindex="-1">{{ __('Sign in') }}</a> {{ __('Already have account?') }} <a href="{{ route('login') }}" tabindex="-1">{{ __('Sign in') }}</a>
</div> </div>
@endif @endif
@endsection @endsection

View File

@@ -11,28 +11,32 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('Email address') }}</label> <label class="form-label">{{ __('Email address') }}</label>
<input type="email" name="email" value="{{ old('email') }}" class="form-control @error('email') is-invalid @enderror" placeholder="{{ __('Email Address') }}"> <input type="email" name="email" value="{{ old('email') }}"
class="form-control @error('email') is-invalid @enderror" placeholder="{{ __('Email Address') }}">
@error('email') @error('email')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('New Password') }}</label> <label class="form-label">{{ __('New Password') }}</label>
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{ __('New Password') }}"> <input type="password" name="password" class="form-control @error('password') is-invalid @enderror"
placeholder="{{ __('New Password') }}">
@error('password') @error('password')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('Repeat New Password') }}</label> <label class="form-label">{{ __('Repeat New Password') }}</label>
<input type="password" name="password_confirmation" class="form-control @error('password_confirmation') is-invalid @enderror" placeholder="{{ __('Repeat New Password') }}"> <input type="password" name="password_confirmation"
class="form-control @error('password_confirmation') is-invalid @enderror"
placeholder="{{ __('Repeat New Password') }}">
@error('password_confirmation') @error('password_confirmation')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
<div class="form-footer"> <div class="form-footer">
<button type="submit" class="btn btn-primary w-100"> <button type="submit" class="btn btn-primary w-100">
{{ __('Reset My Password') }} {{ __('Reset My Password') }}
@@ -42,8 +46,8 @@
</form> </form>
@if (Route::has('login')) @if (Route::has('login'))
<div class="text-center text-muted mt-3"> <div class="text-center text-muted mt-3">
{{ __('Already have account?') }} <a href="{{ route('login') }}" tabindex="-1">{{ __('Sign in') }}</a> {{ __('Already have account?') }} <a href="{{ route('login') }}" tabindex="-1">{{ __('Sign in') }}</a>
</div> </div>
@endif @endif
@endsection @endsection

View File

@@ -6,10 +6,10 @@
<div class="page-header d-print-none"> <div class="page-header d-print-none">
<div class="row align-items-center"> <div class="row align-items-center">
<div class="col"> <div class="col">
<!-- Page pre-title --> <!-- Page pre-title -->
<div class="page-pretitle"> <div class="page-pretitle">
{{ config('app.name') }} {{ config('app.name') }}
</div> </div>
<h2 class="page-title"> <h2 class="page-title">
{{ __('My profile') }} {{ __('My profile') }}
</h2> </h2>
@@ -21,20 +21,22 @@
<div class="container-xl"> <div class="container-xl">
@if ($message = Session::get('success')) @if ($message = Session::get('success'))
<div class="alert alert-success alert-dismissible"> <div class="alert alert-success alert-dismissible">
<div class="d-flex"> <div class="d-flex">
<div> <div>
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon alert-icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon alert-icon" width="24"
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path> height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
<path d="M5 12l5 5l10 -10"></path> stroke-linecap="round" stroke-linejoin="round">
</svg> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M5 12l5 5l10 -10"></path>
</svg>
</div>
<div>
{{ $message }}
</div>
</div> </div>
<div> <a class="btn-close" data-bs-dismiss="alert" aria-label="close"></a>
{{ $message }} </div>
</div>
</div>
<a class="btn-close" data-bs-dismiss="alert" aria-label="close"></a>
</div>
@endif @endif
<form action="{{ route('profile.update') }}" method="POST" class="card" autocomplete="off"> <form action="{{ route('profile.update') }}" method="POST" class="card" autocomplete="off">
@@ -46,34 +48,39 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label required">{{ __('Name') }}</label> <label class="form-label required">{{ __('Name') }}</label>
<input type="text" name="name" class="form-control @error('name') is-invalid @enderror" placeholder="{{ __('Name') }}" value="{{ old('name', auth()->user()->name) }}" required> <input type="text" name="name" class="form-control @error('name') is-invalid @enderror"
placeholder="{{ __('Name') }}" value="{{ old('name', auth()->user()->name) }}" required>
</div> </div>
@error('name') @error('name')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
<div class="mb-3"> <div class="mb-3">
<label class="form-label required">{{ __('Email address') }}</label> <label class="form-label required">{{ __('Email address') }}</label>
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{ __('Email') }}" value="{{ old('email', auth()->user()->email) }}" required> <input type="email" name="email" class="form-control @error('email') is-invalid @enderror"
placeholder="{{ __('Email') }}" value="{{ old('email', auth()->user()->email) }}" required>
</div> </div>
@error('email') @error('email')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
<div class="mb-3"> <div class="mb-3">
<label class="form-label required">{{ __('New password') }}</label> <label class="form-label required">{{ __('New password') }}</label>
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{ __('New password') }}"> <input type="password" name="password" class="form-control @error('password') is-invalid @enderror"
placeholder="{{ __('New password') }}">
</div> </div>
@error('password') @error('password')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
<div class="mb-3"> <div class="mb-3">
<label class="form-label required">{{ __('New password confirmation') }}</label> <label class="form-label required">{{ __('New password confirmation') }}</label>
<input type="password" name="password_confirmation" class="form-control @error('password_confirmation') is-invalid @enderror" placeholder="{{ __('New password confirmation') }}" autocomplete="new-password"> <input type="password" name="password_confirmation"
class="form-control @error('password_confirmation') is-invalid @enderror"
placeholder="{{ __('New password confirmation') }}" autocomplete="new-password">
</div> </div>
@error('password_confirmation') @error('password_confirmation')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
@@ -86,5 +93,4 @@
</div> </div>
</div> </div>
@endsection @endsection

View File

@@ -9,30 +9,35 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('Name') }}</label> <label class="form-label">{{ __('Name') }}</label>
<input type="text" name="name" class="form-control @error('name') is-invalid @enderror" placeholder="{{ __('Name') }}"> <input type="text" name="name" class="form-control @error('name') is-invalid @enderror"
placeholder="{{ __('Name') }}">
@error('name') @error('name')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('Email address') }}</label> <label class="form-label">{{ __('Email address') }}</label>
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{ __('Email Address') }}"> <input type="email" name="email" class="form-control @error('email') is-invalid @enderror"
placeholder="{{ __('Email Address') }}">
@error('email') @error('email')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('Password') }}</label> <label class="form-label">{{ __('Password') }}</label>
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{ __('Password') }}"> <input type="password" name="password" class="form-control @error('password') is-invalid @enderror"
placeholder="{{ __('Password') }}">
@error('password') @error('password')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label class="form-label">{{ __('Repeat Password') }}</label> <label class="form-label">{{ __('Repeat Password') }}</label>
<input type="password" name="password_confirmation" class="form-control form-control-user @error('password_confirmation') is-invalid @enderror" placeholder="{{ __('Repeat Password') }}"> <input type="password" name="password_confirmation"
class="form-control form-control-user @error('password_confirmation') is-invalid @enderror"
placeholder="{{ __('Repeat Password') }}">
@error('password_confirmation') @error('password_confirmation')
<div class="invalid-feedback">{{ $message }}</div> <div class="invalid-feedback">{{ $message }}</div>
@enderror @enderror
</div> </div>
@@ -43,9 +48,8 @@
</form> </form>
@if (Route::has('login')) @if (Route::has('login'))
<div class="text-center text-muted mt-3"> <div class="text-center text-muted mt-3">
{{ __('Already have account?') }} <a href="{{ route('login') }}" tabindex="-1">{{ __('Sign in') }}</a> {{ __('Already have account?') }} <a href="{{ route('login') }}" tabindex="-1">{{ __('Sign in') }}</a>
</div> </div>
@endif @endif
@endsection @endsection

View File

@@ -18,7 +18,7 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<p>{{ __('Before proceeding, please check your email for a verification link.') }}</p> <p>{{ __('Before proceeding, please check your email for a verification link.') }}</p>
{{ __('If you did not receive the email') }}, {{ __('If you did not receive the email') }},
<form class="d-inline" method="POST" action="{{ route('verification.resend') }}"> <form class="d-inline" method="POST" action="{{ route('verification.resend') }}">

View File

@@ -1,69 +1,74 @@
@extends('layouts.front.app') @extends('layouts.front.app')
@section('content') @section('content')
<div class="container py-3"> <div class="container py-3">
<div class="row justify-content-center text-center"> <div class="row justify-content-center text-center">
<div class="col-12 col-lg-8 py-5"> <div class="col-12 col-lg-8 py-5">
<h2 class="h3 fw-bold">ProductAlert is the place to be for top rated product reviews with recommendation such as the right price, latest trend, from the best brands.</h2> <h2 class="h3 fw-bold">ProductAlert is the place to be for top rated product reviews with recommendation such
</div> as the right price, latest trend, from the best brands.</h2>
</div>
</div>
<div class="container-fluid py-4 bg-dark text-light">
<div class="container">
<h3 class="h4 fw-bold text-center mb-3">Featured Articles</h3>
<div class="row g-3 justify-content-center">
@for($i = 1; $i <= 3; $i++)
<div class="col-12 col-xl-3">
<a href="#" class="text-decoration-none">
<div class="card shadow-sm">
<img src="https://placekitten.com/400/300" alt="" class="card-img-top">
<div class="card-body">
<p class="card-text fw-bold">Here is why a kitten catches mice faster than an adult cat.</p>
<div class="d-flex justify-content-between align-items-center">
<small class="text-body-secondary">5 April 2023</small>
<small class="text-body-secondary">9 mins</small>
</div> </div>
</div>
</div> </div>
</a>
</div>
@endfor
</div> </div>
</div> <div class="container-fluid py-4 bg-dark text-light">
</div> <div class="container">
<div class="container-fluid py-4"> <h3 class="h4 fw-bold text-center mb-3">Featured Articles</h3>
<div class="container"> <div class="row g-3 justify-content-center">
<div class="row justify-content-center"> @for ($i = 1; $i <= 3; $i++)
<div class="col col-lg-9"> <div class="col-12 col-xl-3">
<h3 class="h4 fw-bold text-center mb-3">What's New</h3> <a href="#" class="text-decoration-none">
<div class="row g-3"> <div class="card shadow-sm">
@for($i = 1; $i <= 12; $i++) <img src="https://placekitten.com/400/300" alt="" class="card-img-top">
<div class="col-6"> <div class="card-body">
<a href="#" class="text-decoration-none"> <p class="card-text fw-bold">Here is why a kitten catches mice faster than an adult cat.
<div class="card"> </p>
<div class="row g-0"> <div class="d-flex justify-content-between align-items-center">
<div class="col-md-4"> <small class="text-body-secondary">5 April 2023</small>
<img src="https://placekitten.com/400/300" class="img-fluid rounded-start" alt="..."> <small class="text-body-secondary">9 mins</small>
</div>
</div>
</div>
</a>
</div>
@endfor
</div> </div>
<div class="col-md-8">
<div class="card-body">
<p class="card-title fw-bold">Here is why a kitten catches mice faster than an adult cat.</p>
<p class="card-text"><small class="text-body-secondary">5 April 2023 <span class="mx-4"></span> 3 mins</small></p>
</div>
</div>
</div>
</div> </div>
</a>
</div>
@endfor
</div> </div>
<div class="text-center py-3"> <div class="container-fluid py-4">
<a href="#" class="btn btn-primary">All News & Updates</a> <div class="container">
<div class="row justify-content-center">
<div class="col col-lg-9">
<h3 class="h4 fw-bold text-center mb-3">What's New</h3>
<div class="row g-3">
@for ($i = 1; $i <= 12; $i++)
<div class="col-6">
<a href="#" class="text-decoration-none">
<div class="card">
<div class="row g-0">
<div class="col-md-4">
<img src="https://placekitten.com/400/300" class="img-fluid rounded-start"
alt="...">
</div>
<div class="col-md-8">
<div class="card-body">
<p class="card-title fw-bold">Here is why a kitten catches mice faster
than an adult cat.</p>
<p class="card-text"><small class="text-body-secondary">5 April 2023
<span class="mx-4"></span> 3 mins</small></p>
</div>
</div>
</div>
</div>
</a>
</div>
@endfor
</div>
<div class="text-center py-3">
<a href="#" class="btn btn-primary">All News & Updates</a>
</div>
</div>
</div>
</div>
</div> </div>
</div> @endsection
</div>
</div>
</div>
@endsection

View File

@@ -14,23 +14,24 @@
@yield('custom_styles') @yield('custom_styles')
</head> </head>
<body class="theme-light"> <body class="theme-light">
<div class="page"> <div class="page">
<div class="sticky-top"> <div class="sticky-top">
@include('layouts.admin.header') @include('layouts.admin.header')
@include('layouts.admin.navigation') @include('layouts.admin.navigation')
</div> </div>
<div class="page-wrapper"> <div class="page-wrapper">
@yield('content') @yield('content')
@include('layouts.admin.footer') @include('layouts.admin.footer')
</div> </div>
</div> </div>
</div> </div>
<!-- Core plugin JavaScript--> <!-- Core plugin JavaScript-->
@@ -40,4 +41,5 @@
@yield('custom_scripts') @yield('custom_scripts')
</body> </body>
</html> </html>

View File

@@ -1,9 +1,9 @@
<footer class="footer footer-transparent d-print-none"> <footer class="footer footer-transparent d-print-none">
<div class="container-xl"> <div class="container-xl">
<div class="row text-center align-items-center flex-row-reverse"> <div class="row text-center align-items-center flex-row-reverse">
<div class="col-lg-auto ms-lg-auto"> <div class="col-lg-auto ms-lg-auto">
<ul class="list-inline list-inline-dots mb-0"> <ul class="list-inline list-inline-dots mb-0">
{{-- <li class="list-inline-item"><a href="https://preview.tabler.io" target="_blank" class="link-secondary" rel="noopener">Tabler Demo</a></li> {{-- <li class="list-inline-item"><a href="https://preview.tabler.io" target="_blank" class="link-secondary" rel="noopener">Tabler Demo</a></li>
<li class="list-inline-item"><a href="https://preview.tabler.io/docs/index.html" target="_blank" class="link-secondary" rel="noopener">Tabler Doc.</a></li> <li class="list-inline-item"><a href="https://preview.tabler.io/docs/index.html" target="_blank" class="link-secondary" rel="noopener">Tabler Doc.</a></li>
<li class="list-inline-item"><a href="https://preview.tabler.io/license.html" target="_blank" class="link-secondary" rel="noopener">Tabler License</a></li> <li class="list-inline-item"><a href="https://preview.tabler.io/license.html" target="_blank" class="link-secondary" rel="noopener">Tabler License</a></li>
<li class="list-inline-item"><a href="https://github.com/tabler/tabler" target="_blank" class="link-secondary" rel="noopener">Tabler Source code</a></li> <li class="list-inline-item"><a href="https://github.com/tabler/tabler" target="_blank" class="link-secondary" rel="noopener">Tabler Source code</a></li>
@@ -14,22 +14,22 @@
Sponsor Sponsor
</a> </a>
</li> --}} </li> --}}
</ul> </ul>
</div> </div>
<div class="col-12 col-lg-auto mt-3 mt-lg-0"> <div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0"> <ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item"> <li class="list-inline-item">
&copy; {{ date('Y') }} &copy; {{ date('Y') }}
<a href="{{ config('app.url') }}" class="link-secondary">{{ config('app.name') }}</a> <a href="{{ config('app.url') }}" class="link-secondary">{{ config('app.name') }}</a>
</li> </li>
<li class="list-inline-item"> <li class="list-inline-item">
Version {{ config('platform.general.app_version') }} Version {{ config('platform.general.app_version') }}
</li> </li>
<li class="list-inline-item"> <li class="list-inline-item">
Created by Charles Teh Created by Charles Teh
</li> </li>
</ul> </ul>
</div> </div>
</div>
</div> </div>
</div> </footer>
</footer>

View File

@@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
@@ -9,6 +10,7 @@
@vite('resources/sass/app.scss') @vite('resources/sass/app.scss')
</head> </head>
<body class="border-top-wide border-primary d-flex flex-column"> <body class="border-top-wide border-primary d-flex flex-column">
<div class="page page-center"> <div class="page page-center">
@@ -26,4 +28,5 @@
@vite('resources/js/app.js') @vite('resources/js/app.js')
</body> </body>
</html> </html>

View File

@@ -1,34 +1,37 @@
<header class="navbar navbar-expand-md navbar-light sticky-top d-print-none"> <header class="navbar navbar-expand-md navbar-light sticky-top d-print-none">
<div class="container-xl"> <div class="container-xl">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-menu"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-menu">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<a href="#" class="h1 navbar-brand navbar-brand-autodark d-none-navbar-horizontal pe-0 pe-md-3"> <a href="#" class="h1 navbar-brand navbar-brand-autodark d-none-navbar-horizontal pe-0 pe-md-3">
{{ config('app.name') }} CMS {{ config('app.name') }} CMS
</a>
<div class="navbar-nav flex-row order-md-last">
@auth
<div class="nav-item dropdown">
<a href="#" class="nav-link d-flex lh-1 text-reset p-0" data-bs-toggle="dropdown" aria-label="Open user menu">
<span class="avatar avatar-sm" style="background-image: url(https://eu.ui-avatars.com/api/?name={{ urlencode(auth()->user()->name) }})"></span>
<div class="d-none d-xl-block ps-2">
{{ auth()->user()->name ?? null }}
</div>
</a> </a>
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow"> <div class="navbar-nav flex-row order-md-last">
<a href="{{ route('profile.show') }}" class="dropdown-item">{{ __('Profile') }}</a>
<div class="dropdown-divider"></div>
<form method="POST" action="{{ route('logout') }}">
@csrf
<a href="{{ route('logout') }}" class="dropdown-item" onclick="event.preventDefault(); this.closest('form').submit();">
{{ __('Log Out') }}
</a>
</form>
</div>
</div>
@endauth
@auth
<div class="nav-item dropdown">
<a href="#" class="nav-link d-flex lh-1 text-reset p-0" data-bs-toggle="dropdown"
aria-label="Open user menu">
<span class="avatar avatar-sm"
style="background-image: url(https://eu.ui-avatars.com/api/?name={{ urlencode(auth()->user()->name) }})"></span>
<div class="d-none d-xl-block ps-2">
{{ auth()->user()->name ?? null }}
</div>
</a>
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
<a href="{{ route('profile.show') }}" class="dropdown-item">{{ __('Profile') }}</a>
<div class="dropdown-divider"></div>
<form method="POST" action="{{ route('logout') }}">
@csrf
<a href="{{ route('logout') }}" class="dropdown-item"
onclick="event.preventDefault(); this.closest('form').submit();">
{{ __('Log Out') }}
</a>
</form>
</div>
</div>
@endauth
</div>
</div> </div>
</div> </header>
</header>

View File

@@ -4,15 +4,18 @@
<div class="container-xl"> <div class="container-xl">
<ul class="navbar-nav"> <ul class="navbar-nav">
<li class="nav-item @if(request()->routeIs('home')) active @endif"> <li class="nav-item @if (request()->routeIs('home')) active @endif">
<a class="nav-link" href="{{ route('home') }}" > <a class="nav-link" href="{{ route('home') }}">
<span class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/home --> <span
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-door-exit" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/home -->
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-door-exit"
<path d="M13 12v.01"></path> width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
<path d="M3 21h18"></path> stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path d="M5 21v-16a2 2 0 0 1 2 -2h7.5m2.5 10.5v7.5"></path> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M14 7h7m-3 -3l3 3l-3 3"></path> <path d="M13 12v.01"></path>
<path d="M3 21h18"></path>
<path d="M5 21v-16a2 2 0 0 1 2 -2h7.5m2.5 10.5v7.5"></path>
<path d="M14 7h7m-3 -3l3 3l-3 3"></path>
</svg> </svg>
</span> </span>
<span class="nav-link-title"> <span class="nav-link-title">
@@ -21,11 +24,19 @@
</a> </a>
</li> </li>
<li class="nav-item @if(request()->routeIs('dashboard')) active @endif"> <li class="nav-item @if (request()->routeIs('dashboard')) active @endif">
<a class="nav-link" href="{{ route('dashboard') }}" > <a class="nav-link" href="{{ route('dashboard') }}">
<span class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/home --> <span
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><polyline points="5 12 3 12 12 3 21 12 19 12" /><path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" /><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" /></svg> class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/home -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<polyline points="5 12 3 12 12 3 21 12 19 12" />
<path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" />
<path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" />
</svg>
</span> </span>
<span class="nav-link-title"> <span class="nav-link-title">
{{ __('Dashboard') }} {{ __('Dashboard') }}
@@ -33,10 +44,13 @@
</a> </a>
</li> </li>
<li class="nav-item @if(request()->routeIs('users.index')) active @endif"> <li class="nav-item @if (request()->routeIs('users.index')) active @endif">
<a class="nav-link" href="{{ route('users.index') }}" > <a class="nav-link" href="{{ route('users.index') }}">
<span class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/file-text --> <span
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-users" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/file-text -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-users"
width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<circle cx="9" cy="7" r="4"></circle> <circle cx="9" cy="7" r="4"></circle>
<path d="M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path> <path d="M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path>
@@ -50,15 +64,18 @@
</a> </a>
</li> </li>
<li class="nav-item @if(request()->routeIs('about')) active @endif"> <li class="nav-item @if (request()->routeIs('about')) active @endif">
<a class="nav-link" href="{{ route('about') }}" > <a class="nav-link" href="{{ route('about') }}">
<span class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/file-text --> <span
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-info-circle" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/file-text -->
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-info-circle"
<circle cx="12" cy="12" r="9"></circle> width="24" height="24" viewBox="0 0 24 24" stroke-width="2"
<line x1="12" y1="8" x2="12.01" y2="8"></line> stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<polyline points="11 12 12 12 12 16 13 16"></polyline> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
</svg> <circle cx="12" cy="12" r="9"></circle>
<line x1="12" y1="8" x2="12.01" y2="8"></line>
<polyline points="11 12 12 12 12 16 13 16"></polyline>
</svg>
</span> </span>
<span class="nav-link-title"> <span class="nav-link-title">
{{ __('About') }} {{ __('About') }}
@@ -67,43 +84,51 @@
</li> </li>
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#navbar-extra" data-bs-toggle="dropdown" data-bs-auto-close="outside" role="button" aria-expanded="false" > <a class="nav-link dropdown-toggle" href="#navbar-extra" data-bs-toggle="dropdown"
<span class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/star --> data-bs-auto-close="outside" role="button" aria-expanded="false">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-list-details" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <span
class="nav-link-icon d-md-none d-lg-inline-block"><!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg"
class="icon icon-tabler icon-tabler-list-details" width="24" height="24"
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M13 5h8"></path> <path d="M13 5h8"></path>
<path d="M13 9h5"></path> <path d="M13 9h5"></path>
<path d="M13 15h8"></path> <path d="M13 15h8"></path>
<path d="M13 19h5"></path> <path d="M13 19h5"></path>
<rect x="3" y="4" width="6" height="6" rx="1"></rect> <rect x="3" y="4" width="6" height="6"
<rect x="3" y="14" width="6" height="6" rx="1"></rect> rx="1"></rect>
<rect x="3" y="14" width="6" height="6"
rx="1"></rect>
</svg> </svg>
</span> </span>
<span class="nav-link-title"> <span class="nav-link-title">
Submenus Submenus
</span> </span>
</a> </a>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item" href="#" > <a class="dropdown-item" href="#">
Submenu Item #1 Submenu Item #1
</a> </a>
<div class="dropend"> <div class="dropend">
<a class="dropdown-item dropdown-toggle" href="#" data-bs-toggle="dropdown" data-bs-auto-close="outside" role="button" aria-expanded="false"> <a class="dropdown-item dropdown-toggle" href="#" data-bs-toggle="dropdown"
data-bs-auto-close="outside" role="button" aria-expanded="false">
Submenu Item #2 Submenu Item #2
</a> </a>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a href="#" class="dropdown-item"> <a href="#" class="dropdown-item">
Subsubmenu Item #1 Subsubmenu Item #1
</a> </a>
<a href="#" class="dropdown-item"> <a href="#" class="dropdown-item">
Subsubmenu Item #2 Subsubmenu Item #2
</a> </a>
<a href="#" class="dropdown-item"> <a href="#" class="dropdown-item">
Subsubmenu Item #3 Subsubmenu Item #3
</a> </a>
</div> </div>
</div> </div>
<a class="dropdown-item" href="#" > <a class="dropdown-item" href="#">
Submenu Item #3 Submenu Item #3
</a> </a>
</div> </div>
@@ -113,4 +138,4 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -16,6 +16,7 @@
@include('layouts.front.header') @include('layouts.front.header')
</head> </head>
<body> <body>
@include('layouts.front.navigation') @include('layouts.front.navigation')
@@ -31,4 +32,5 @@
@yield('custom_scripts') @yield('custom_scripts')
</body> </body>
</html> </html>

View File

@@ -1,59 +1,73 @@
<div class="container-fluid border-top"> <div class="container-fluid border-top">
<footer class="py-5 container"> <footer class="py-5 container">
<div class="row"> <div class="row">
<div class="col-6 col-md-2 mb-3"> <div class="col-6 col-md-2 mb-3">
<h5>Section</h5> <h5>Section</h5>
<ul class="nav flex-column"> <ul class="nav flex-column">
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Home</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Home</a></li>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Features</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Features</a></li>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Pricing</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Pricing</a>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">FAQs</a></li> </li>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">About</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">FAQs</a></li>
</ul> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">About</a></li>
</div> </ul>
</div>
<div class="col-6 col-md-2 mb-3"> <div class="col-6 col-md-2 mb-3">
<h5>Section</h5> <h5>Section</h5>
<ul class="nav flex-column"> <ul class="nav flex-column">
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Home</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Home</a></li>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Features</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Features</a>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Pricing</a></li> </li>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">FAQs</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Pricing</a>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">About</a></li> </li>
</ul> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">FAQs</a></li>
</div> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">About</a></li>
</ul>
</div>
<div class="col-6 col-md-2 mb-3"> <div class="col-6 col-md-2 mb-3">
<h5>Section</h5> <h5>Section</h5>
<ul class="nav flex-column"> <ul class="nav flex-column">
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Home</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Home</a></li>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Features</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Features</a>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Pricing</a></li> </li>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">FAQs</a></li> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">Pricing</a>
<li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">About</a></li> </li>
</ul> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">FAQs</a></li>
</div> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-body-secondary">About</a></li>
</ul>
</div>
<div class="col-md-5 offset-md-1 mb-3"> <div class="col-md-5 offset-md-1 mb-3">
<form> <form>
<h5>Subscribe to our newsletter</h5> <h5>Subscribe to our newsletter</h5>
<p>Monthly digest of what's new and exciting from us.</p> <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"> <div class="d-flex flex-column flex-sm-row w-100 gap-2">
<label for="newsletter1" class="visually-hidden">Email address</label> <label for="newsletter1" class="visually-hidden">Email address</label>
<input id="newsletter1" type="text" class="form-control" placeholder="Email address"> <input id="newsletter1" type="text" class="form-control" placeholder="Email address">
<button class="btn btn-primary" type="button">Subscribe</button> <button class="btn btn-primary" type="button">Subscribe</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
<div class="d-flex flex-column flex-sm-row justify-content-between py-4 my-4"> <div class="d-flex flex-column flex-sm-row justify-content-between py-4 my-4">
<p>© {{ date('Y') }} {{ config('app.name') }}. All rights reserved.</p> <p>© {{ date('Y') }} {{ config('app.name') }}. All rights reserved.</p>
<ul class="list-unstyled d-flex"> <ul class="list-unstyled d-flex">
<li class="ms-3"><a class="link-body-emphasis" href="#"><svg class="bi" width="24" height="24"><use xlink:href="#twitter"></use></svg></a></li> <li class="ms-3"><a class="link-body-emphasis" href="#"><svg class="bi" width="24"
<li class="ms-3"><a class="link-body-emphasis" href="#"><svg class="bi" width="24" height="24"><use xlink:href="#instagram"></use></svg></a></li> height="24">
<li class="ms-3"><a class="link-body-emphasis" href="#"><svg class="bi" width="24" height="24"><use xlink:href="#facebook"></use></svg></a></li> <use xlink:href="#twitter"></use>
</ul> </svg></a></li>
</div> <li class="ms-3"><a class="link-body-emphasis" href="#"><svg class="bi" width="24"
</footer> height="24">
</div> <use xlink:href="#instagram"></use>
</svg></a></li>
<li class="ms-3"><a class="link-body-emphasis" href="#"><svg class="bi" width="24"
height="24">
<use xlink:href="#facebook"></use>
</svg></a></li>
</ul>
</div>
</footer>
</div>

View File

@@ -1,52 +1,55 @@
<div class="container-fluid border-bottom"> <div class="container-fluid border-bottom">
<header class="d-flex flex-wrap align-items-center justify-content-center justify-content-md-between py-3"> <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"> <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"> <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar"
<i class="h4 bi bi-list"></i> aria-controls="offcanvasNavbar" aria-label="Toggle navigation">
</button> <i class="h4 bi bi-list"></i>
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel"> </button>
<div class="offcanvas-header"> <div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasNavbar"
<h4 class="offcanvas-title fw-bold mb-0" id="offcanvasNavbarLabel">{{ config('app.name') }}</h4> aria-labelledby="offcanvasNavbarLabel">
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> <div class="offcanvas-header">
</div> <h4 class="offcanvas-title fw-bold mb-0" id="offcanvasNavbarLabel">{{ config('app.name') }}</h4>
<div class="offcanvas-body"> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> </div>
<li class="nav-item"> <div class="offcanvas-body">
<a class="nav-link active" aria-current="page" href="#">Home</a> <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
</li> <li class="nav-item">
@foreach ($categories as $category) <a class="nav-link active" aria-current="page" href="#">Home</a>
<li class="nav-item"> </li>
<a class="nav-link active" aria-current="page" href="#">{{ $category->name }}</a> @foreach ($categories as $category)
</li> <li class="nav-item">
@endforeach <a class="nav-link active" aria-current="page" href="#">{{ $category->name }}</a>
</li>
@endforeach
</ul>
</div>
</div>
<a href="/" class="d-inline-flex link-body-emphasis text-decoration-none">
<h1 class="h4 mb-0 fw-bold">{{ config('app.name') }}</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="#" class="nav-link px-2 link-secondary">{{ $category->short_name }}</a></li>
@endif
@endforeach
</ul> </ul>
</div>
</div>
<a href="/" class="d-inline-flex link-body-emphasis text-decoration-none">
<h1 class="h4 mb-0 fw-bold">{{ config('app.name') }}</h1>
</a>
</div>
<ul class="nav col-12 col-md-auto mb-2 justify-content-center mb-md-0"> <div class="col-md-3 text-end">
@foreach ($categories as $category) <div class="dropdown">
@if ($category->is_top) <button class="btn btn-outline-secondary dropdown-toggle" type="button" id="dropdownMenuSwitch"
<li><a href="#" class="nav-link px-2 link-secondary">{{ $category->short_name }}</a></li> data-bs-toggle="dropdown" aria-expanded="false">
@endif {{ $country->name }}
@endforeach </button>
</ul> <ul class="dropdown-menu" aria-labelledby="dropdownMenuSwitch">
<li><a class="dropdown-item" href="#">Country 1</a></li>
<div class="col-md-3 text-end"> <li><a class="dropdown-item" href="#">Country 2</a></li>
<div class="dropdown"> <li><a class="dropdown-item" href="#">Country 3</a></li>
<button class="btn btn-outline-secondary dropdown-toggle" type="button" id="dropdownMenuSwitch" data-bs-toggle="dropdown" aria-expanded="false"> </ul>
{{ $country->name }} </div>
</button> </div>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuSwitch"> </header>
<li><a class="dropdown-item" href="#">Country 1</a></li>
<li><a class="dropdown-item" href="#">Country 2</a></li>
<li><a class="dropdown-item" href="#">Country 3</a></li>
</ul>
</div> </div>
</div>
</header>
</div>

View File

@@ -19,12 +19,10 @@
Auth::routes(); Auth::routes();
Route::prefix('admin')->middleware('auth')->group(function () { Route::prefix('admin')->middleware('auth')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\DashboardController::class, 'index'])->name('dashboard'); Route::get('/', [App\Http\Controllers\Admin\DashboardController::class, 'index'])->name('dashboard');
Route::view('about', 'admin.about')->name('about'); Route::view('about', 'admin.about')->name('about');
Route::get('users', [\App\Http\Controllers\Admin\UserController::class, 'index'])->name('users.index'); Route::get('users', [\App\Http\Controllers\Admin\UserController::class, 'index'])->name('users.index');