This commit is contained in:
Dr Masroor Ehsan 2025-01-02 20:05:11 +06:00
parent ca13f405e9
commit 8ad61a9e75
9 changed files with 809 additions and 490 deletions

View File

@ -2,6 +2,7 @@
namespace App\Providers;
use Illuminate\Support\Facades\Vite;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
@ -19,6 +20,15 @@ public function register(): void
*/
public function boot(): void
{
//
Vite::useStyleTagAttributes(function (?string $src, string $url, ?array $chunk, ?array $manifest) {
if ($src !== null) {
return [
'class' => preg_match("/(resources\/assets\/vendor\/scss\/(rtl\/)?core)-?.*/i", $src) ? 'template-customizer-core-css' :
(preg_match("/(resources\/assets\/vendor\/scss\/(rtl\/)?theme)-?.*/i", $src) ? 'template-customizer-theme-css' : ''),
];
}
return [];
});
}
}

View File

@ -0,0 +1,227 @@
<?php
namespace App\Services;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Str;
class ThemeHelper
{
public static function appClasses(): array
{
$data = config('custom.custom');
// default data array
$DefaultData = [
'myLayout' => 'vertical',
'myTheme' => 'theme-default',
'myStyle' => 'light',
'myRTLSupport' => true,
'myRTLMode' => true,
'hasCustomizer' => true,
'showDropdownOnHover' => true,
'displayCustomizer' => true,
'contentLayout' => 'compact',
'headerType' => 'fixed',
'navbarType' => 'fixed',
'menuFixed' => true,
'menuCollapsed' => false,
'footerFixed' => false,
'menuFlipped' => false,
// 'menuOffcanvas' => false,
'customizerControls' => [
'rtl',
'style',
'headerType',
'contentLayout',
'layoutCollapsed',
'showDropdownOnHover',
'layoutNavbarOptions',
'themes',
],
// 'defaultLanguage'=>'en',
];
// if any key missing of array from custom.php file it will be merge and set a default value from dataDefault array and store in data variable
$data = array_merge($DefaultData, $data);
// All options available in the template
$allOptions = [
'myLayout' => ['vertical', 'horizontal', 'blank', 'front'],
'menuCollapsed' => [true, false],
'hasCustomizer' => [true, false],
'showDropdownOnHover' => [true, false],
'displayCustomizer' => [true, false],
'contentLayout' => ['compact', 'wide'],
'headerType' => ['fixed', 'static'],
'navbarType' => ['fixed', 'static', 'hidden'],
'myStyle' => ['light', 'dark', 'system'],
'myTheme' => ['theme-default', 'theme-bordered', 'theme-semi-dark'],
'myRTLSupport' => [true, false],
'myRTLMode' => [true, false],
'menuFixed' => [true, false],
'footerFixed' => [true, false],
'menuFlipped' => [true, false],
// 'menuOffcanvas' => [true, false],
'customizerControls' => [],
// 'defaultLanguage'=>array('en'=>'en','fr'=>'fr','de'=>'de','ar'=>'ar'),
];
// if myLayout value empty or not match with default options in custom.php config file then set a default value
foreach ($allOptions as $key => $value) {
if (array_key_exists($key, $DefaultData)) {
if (gettype($DefaultData[$key]) === gettype($data[$key])) {
// data key should be string
if (is_string($data[$key])) {
// data key should not be empty
if (isset($data[$key]) && $data[$key] !== null) {
// data key should not be exist inside allOptions array's sub array
if (! array_key_exists($data[$key], $value)) {
// ensure that passed value should be match with any of allOptions array value
$result = array_search($data[$key], $value, 'strict');
if (empty($result) && $result !== 0) {
$data[$key] = $DefaultData[$key];
}
}
} else {
// if data key not set or
$data[$key] = $DefaultData[$key];
}
}
} else {
$data[$key] = $DefaultData[$key];
}
}
}
$styleVal = $data['myStyle'] == 'dark' ? 'dark' : 'light';
$styleUpdatedVal = $data['myStyle'] == 'dark' ? 'dark' : $data['myStyle'];
// Determine if the layout is admin or front based on cookies
$layoutName = $data['myLayout'];
$isAdmin = Str::contains($layoutName, 'front') ? false : true;
$modeCookieName = $isAdmin ? 'admin-mode' : 'front-mode';
$colorPrefCookieName = $isAdmin ? 'admin-colorPref' : 'front-colorPref';
// Determine style based on cookies, only if not 'blank-layout'
if ($layoutName !== 'blank') {
if (isset($_COOKIE[$modeCookieName])) {
$styleVal = $_COOKIE[$modeCookieName];
if ($styleVal === 'system') {
$styleVal = isset($_COOKIE[$colorPrefCookieName]) ? $_COOKIE[$colorPrefCookieName] : 'light';
}
$styleUpdatedVal = $_COOKIE[$modeCookieName];
}
}
isset($_COOKIE['theme']) ? $themeVal = $_COOKIE['theme'] : $themeVal = $data['myTheme'];
$directionVal = isset($_COOKIE['direction']) ? ($_COOKIE['direction'] === 'true' ? 'rtl' : 'ltr') : $data['myRTLMode'];
// layout classes
$layoutClasses = [
'layout' => $data['myLayout'],
'theme' => $themeVal,
'themeOpt' => $data['myTheme'],
'style' => $styleVal,
'styleOpt' => $data['myStyle'],
'styleOptVal' => $styleUpdatedVal,
'rtlSupport' => $data['myRTLSupport'],
'rtlMode' => $data['myRTLMode'],
'textDirection' => $directionVal, // $data['myRTLMode'],
'menuCollapsed' => $data['menuCollapsed'],
'hasCustomizer' => $data['hasCustomizer'],
'showDropdownOnHover' => $data['showDropdownOnHover'],
'displayCustomizer' => $data['displayCustomizer'],
'contentLayout' => $data['contentLayout'],
'headerType' => $data['headerType'],
'navbarType' => $data['navbarType'],
'menuFixed' => $data['menuFixed'],
'footerFixed' => $data['footerFixed'],
'menuFlipped' => $data['menuFlipped'],
'customizerControls' => $data['customizerControls'],
];
// sidebar Collapsed
if ($layoutClasses['menuCollapsed'] == true) {
$layoutClasses['menuCollapsed'] = 'layout-menu-collapsed';
}
// Header Type
if ($layoutClasses['headerType'] == 'fixed') {
$layoutClasses['headerType'] = 'layout-menu-fixed';
}
// Navbar Type
if ($layoutClasses['navbarType'] == 'fixed') {
$layoutClasses['navbarType'] = 'layout-navbar-fixed';
} elseif ($layoutClasses['navbarType'] == 'static') {
$layoutClasses['navbarType'] = '';
} else {
$layoutClasses['navbarType'] = 'layout-navbar-hidden';
}
// Menu Fixed
if ($layoutClasses['menuFixed'] == true) {
$layoutClasses['menuFixed'] = 'layout-menu-fixed';
}
// Footer Fixed
if ($layoutClasses['footerFixed'] == true) {
$layoutClasses['footerFixed'] = 'layout-footer-fixed';
}
// Menu Flipped
if ($layoutClasses['menuFlipped'] == true) {
$layoutClasses['menuFlipped'] = 'layout-menu-flipped';
}
// Menu Offcanvas
// if ($layoutClasses['menuOffcanvas'] == true) {
// $layoutClasses['menuOffcanvas'] = 'layout-menu-offcanvas';
// }
// RTL Supported template
if ($layoutClasses['rtlSupport'] == true) {
$layoutClasses['rtlSupport'] = '/rtl';
}
// RTL Layout/Mode
if ($layoutClasses['rtlMode'] == true) {
$layoutClasses['rtlMode'] = 'rtl';
$layoutClasses['textDirection'] = isset($_COOKIE['direction']) ? ($_COOKIE['direction'] === 'true' ? 'rtl' : 'ltr') : 'rtl';
} else {
$layoutClasses['rtlMode'] = 'ltr';
$layoutClasses['textDirection'] = isset($_COOKIE['direction']) && $_COOKIE['direction'] === 'true' ? 'rtl' : 'ltr';
}
// Show DropdownOnHover for Horizontal Menu
if ($layoutClasses['showDropdownOnHover'] == true) {
$layoutClasses['showDropdownOnHover'] = true;
} else {
$layoutClasses['showDropdownOnHover'] = false;
}
// To hide/show display customizer UI, not js
if ($layoutClasses['displayCustomizer'] == true) {
$layoutClasses['displayCustomizer'] = true;
} else {
$layoutClasses['displayCustomizer'] = false;
}
return $layoutClasses;
}
public static function updatePageConfig($pageConfigs): void
{
$demo = 'custom';
if (isset($pageConfigs)) {
if (count($pageConfigs) > 0) {
foreach ($pageConfigs as $config => $val) {
Config::set('custom.'.$demo.'.'.$config, $val);
}
}
}
}
}

View File

@ -1,7 +1,7 @@
@php
use App\Helpers\Helper;
use App\Services\ThemeHelper;
use Illuminate\Support\Facades\Route;
$configData = Helper::appClasses();
$configData = ThemeHelper::appClasses();
$customizerHidden = 'customizer-hide';
@endphp
@ -10,58 +10,65 @@
@section('title', 'Confirm Password')
@section('page-style')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
@endsection
@section('content')
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-forgot-password-illustration-'.$configData['style'].'.png') }}" class="auth-cover-illustration w-100" alt="auth-illustration" data-app-light-img="illustrations/auth-forgot-password-illustration-light.png" data-app-dark-img="illustrations/auth-forgot-password-illustration-dark.png" />
<img src="{{asset('assets/img/illustrations/auth-cover-forgot-password-mask-'.$configData['style'].'.png') }}" class="authentication-image" alt="mask" data-app-light-img="illustrations/auth-cover-forgot-password-mask-light.png" data-app-dark-img="illustrations/auth-cover-forgot-password-mask-dark.png" />
</div>
<!-- /Left Section -->
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-forgot-password-illustration-'.$configData['style'].'.png') }}"
class="auth-cover-illustration w-100" alt="auth-illustration"
data-app-light-img="illustrations/auth-forgot-password-illustration-light.png"
data-app-dark-img="illustrations/auth-forgot-password-illustration-dark.png"/>
<img src="{{asset('assets/img/illustrations/auth-cover-forgot-password-mask-'.$configData['style'].'.png') }}"
class="authentication-image" alt="mask"
data-app-light-img="illustrations/auth-cover-forgot-password-mask-light.png"
data-app-dark-img="illustrations/auth-cover-forgot-password-mask-dark.png"/>
</div>
<!-- /Left Section -->
<!-- Confirm Password -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg p-sm-12 p-6">
<div class="w-px-400 mx-auto">
<h4 class="mb-1">Confirm Password? 🔒</h4>
<p class="mb-5">Please confirm your password before continuing.</p>
<form id="twoStepsForm" class="mb-5" action="{{ route('password.confirm') }}" method="POST">
@csrf
<div class="mb-5">
<div class="form-password-toggle">
<div class="input-group input-group-merge @error('password') is-invalid @enderror">
<div class="form-floating form-floating-outline">
<input type="password" id="password"
class="form-control @error('password') is-invalid @enderror" name="password"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password" />
<label for="password">Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<!-- Confirm Password -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg p-sm-12 p-6">
<div class="w-px-400 mx-auto">
<h4 class="mb-1">Confirm Password? 🔒</h4>
<p class="mb-5">Please confirm your password before continuing.</p>
<form id="twoStepsForm" class="mb-5" action="{{ route('password.confirm') }}" method="POST">
@csrf
<div class="mb-5">
<div class="form-password-toggle">
<div class="input-group input-group-merge @error('password') is-invalid @enderror">
<div class="form-floating form-floating-outline">
<input type="password" id="password"
class="form-control @error('password') is-invalid @enderror"
name="password"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password"/>
<label for="password">Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
@enderror
</div>
</div>
<button class="btn btn-primary d-grid w-100">Confirm Password</button>
</form>
</div>
</div>
</div>
<button class="btn btn-primary d-grid w-100">Confirm Password</button>
</form>
</div>
<!-- /Confirm Password -->
</div>
</div>
<!-- /Confirm Password -->
</div>
</div>
@endsection

View File

@ -1,7 +1,7 @@
@php
use App\Helpers\Helper;
use App\Services\ThemeHelper;
use Illuminate\Support\Facades\Route;
$configData = Helper::appClasses();
$configData = ThemeHelper::appClasses();
$customizerHidden = 'customizer-hide';
@endphp
@ -10,62 +10,69 @@
@section('title', 'Forgot Password')
@section('page-style')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
@endsection
@section('content')
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-forgot-password-illustration-'.$configData['style'].'.png') }}" class="auth-cover-illustration w-100" alt="auth-illustration" data-app-light-img="illustrations/auth-forgot-password-illustration-light.png" data-app-dark-img="illustrations/auth-forgot-password-illustration-dark.png" />
<img src="{{asset('assets/img/illustrations/auth-cover-forgot-password-mask-'.$configData['style'].'.png') }}" class="authentication-image" alt="mask" data-app-light-img="illustrations/auth-cover-forgot-password-mask-light.png" data-app-dark-img="illustrations/auth-cover-forgot-password-mask-dark.png" />
</div>
<!-- /Left Section -->
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-forgot-password-illustration-'.$configData['style'].'.png') }}"
class="auth-cover-illustration w-100" alt="auth-illustration"
data-app-light-img="illustrations/auth-forgot-password-illustration-light.png"
data-app-dark-img="illustrations/auth-forgot-password-illustration-dark.png"/>
<img src="{{asset('assets/img/illustrations/auth-cover-forgot-password-mask-'.$configData['style'].'.png') }}"
class="authentication-image" alt="mask"
data-app-light-img="illustrations/auth-cover-forgot-password-mask-light.png"
data-app-dark-img="illustrations/auth-cover-forgot-password-mask-dark.png"/>
</div>
<!-- /Left Section -->
<!-- Forgot Password -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg p-sm-12 p-6">
<div class="w-px-400 mx-auto">
<h4 class="mb-1">Forgot Password? 🔒</h4>
<p class="mb-5">Enter your email and we'll send you instructions to reset your password</p>
<!-- Forgot Password -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg p-sm-12 p-6">
<div class="w-px-400 mx-auto">
<h4 class="mb-1">Forgot Password? 🔒</h4>
<p class="mb-5">Enter your email and we'll send you instructions to reset your password</p>
@if (session('status'))
<div class="mb-1 text-success">
{{ session('status') }}
</div>
@endif
<form id="formAuthentication" class="mb-5" action="{{ route('password.email') }}" method="POST">
@csrf
<div class="form-floating form-floating-outline mb-5">
<input type="text" class="form-control @error('email') is-invalid @enderror" id="email" name="email" placeholder="john@example.com" autofocus>
<label for="email">Email</label>
@error('email')
<span class="invalid-feedback" role="alert">
@if (session('status'))
<div class="mb-1 text-success">
{{ session('status') }}
</div>
@endif
<form id="formAuthentication" class="mb-5" action="{{ route('password.email') }}" method="POST">
@csrf
<div class="form-floating form-floating-outline mb-5">
<input type="text" class="form-control @error('email') is-invalid @enderror" id="email"
name="email" placeholder="john@example.com" autofocus>
<label for="email">Email</label>
@error('email')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
</div>
<button type="submit" class="btn btn-primary d-grid w-100">Send Reset Link</button>
</form>
<div class="text-center">
@if (Route::has('login'))
<a href="{{ route('login') }}" class="d-flex align-items-center justify-content-center">
<i class="ri-arrow-left-s-line scaleX-n1-rtl ri-20px me-1_5"></i>
Back to login
</a>
@endif
@enderror
</div>
<button type="submit" class="btn btn-primary d-grid w-100">Send Reset Link</button>
</form>
<div class="text-center">
@if (Route::has('login'))
<a href="{{ route('login') }}" class="d-flex align-items-center justify-content-center">
<i class="ri-arrow-left-s-line scaleX-n1-rtl ri-20px me-1_5"></i>
Back to login
</a>
@endif
</div>
</div>
</div>
<!-- /Forgot Password -->
</div>
</div>
</div>
<!-- /Forgot Password -->
</div>
</div>
@endsection

View File

@ -1,7 +1,7 @@
@php
use App\Helpers\Helper;
use App\Services\ThemeHelper;
use Illuminate\Support\Facades\Route;
$configData = Helper::appClasses();
$configData = ThemeHelper::appClasses();
$customizerHidden = 'customizer-hide';
@endphp
@ -10,120 +10,131 @@
@section('title', 'Login')
@section('page-style')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
@endsection
@section('content')
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-login-illustration-'.$configData['style'].'.png') }}" class="auth-cover-illustration w-100" alt="auth-illustration" data-app-light-img="illustrations/auth-login-illustration-light.png" data-app-dark-img="illustrations/auth-login-illustration-dark.png" />
<img src="{{asset('assets/img/illustrations/auth-cover-login-mask-'.$configData['style'].'.png') }}" class="authentication-image" alt="mask" data-app-light-img="illustrations/auth-cover-login-mask-light.png" data-app-dark-img="illustrations/auth-cover-login-mask-dark.png" />
</div>
<!-- /Left Section -->
<!-- Login -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Welcome to {{config('variables.templateName')}}! 👋</h4>
<p class="mb-5">Please sign-in to your account and start the adventure</p>
@if (session('status'))
<div class="alert alert-success mb-3" role="alert">
<div class="alert-body">
{{ session('status') }}
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span
class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-login-illustration-'.$configData['style'].'.png') }}"
class="auth-cover-illustration w-100" alt="auth-illustration"
data-app-light-img="illustrations/auth-login-illustration-light.png"
data-app-dark-img="illustrations/auth-login-illustration-dark.png"/>
<img src="{{asset('assets/img/illustrations/auth-cover-login-mask-'.$configData['style'].'.png') }}"
class="authentication-image" alt="mask"
data-app-light-img="illustrations/auth-cover-login-mask-light.png"
data-app-dark-img="illustrations/auth-cover-login-mask-dark.png"/>
</div>
</div>
@endif
<form id="formAuthentication" class="mb-5" action="{{ route('login') }}" method="POST">
@csrf
<div class="form-floating form-floating-outline mb-5">
<input type="text" class="form-control @error('email') is-invalid @enderror" id="login-email" name="email" placeholder="john@example.com" autofocus value="{{ old('email') }}">
<label for="login-email">Email</label>
@error('email')
<span class="invalid-feedback" role="alert">
<!-- /Left Section -->
<!-- Login -->
<div
class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Welcome to {{config('variables.templateName')}}! 👋</h4>
<p class="mb-5">Please sign-in to your account and start the adventure</p>
@if (session('status'))
<div class="alert alert-success mb-3" role="alert">
<div class="alert-body">
{{ session('status') }}
</div>
</div>
@endif
<form id="formAuthentication" class="mb-5" action="{{ route('login') }}" method="POST">
@csrf
<div class="form-floating form-floating-outline mb-5">
<input type="text" class="form-control @error('email') is-invalid @enderror"
id="login-email" name="email" placeholder="john@example.com" autofocus
value="{{ old('email') }}">
<label for="login-email">Email</label>
@error('email')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
</div>
<div class="mb-5">
<div class="form-password-toggle">
<div class="input-group input-group-merge @error('password') is-invalid @enderror">
<div class="form-floating form-floating-outline">
<input type="password" id="login-password"
class="form-control @error('password') is-invalid @enderror" name="password"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password" />
<label for="login-password">Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
@enderror
</div>
<div class="mb-5">
<div class="form-password-toggle">
<div class="input-group input-group-merge @error('password') is-invalid @enderror">
<div class="form-floating form-floating-outline">
<input type="password" id="login-password"
class="form-control @error('password') is-invalid @enderror"
name="password"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password"/>
<label for="login-password">Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
@enderror
</div>
</div>
<div class="mb-5 d-flex justify-content-between mt-5">
<div class="form-check mt-2">
<input class="form-check-input" type="checkbox" id="remember-me">
<label class="form-check-label" for="remember-me">
Remember Me
</label>
</div>
@if (Route::has('password.request'))
<a href="{{ route('password.request') }}" class="float-end mb-1 mt-2">
<span>Forgot Password?</span>
</a>
@endif
</div>
<button class="btn btn-primary d-grid w-100">
Sign in
</button>
</form>
<p class="text-center">
<span>New on our platform?</span>
@if (Route::has('register'))
<a href="{{ route('register') }}">
<span>Create an account</span>
</a>
@endif
</p>
<div class="divider my-5">
<div class="divider-text">or</div>
</div>
<div class="d-flex justify-content-center gap-2">
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-facebook">
<i class="tf-icons ri-facebook-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-twitter">
<i class="tf-icons ri-twitter-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-github">
<i class="tf-icons ri-github-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-google-plus">
<i class="tf-icons ri-google-fill"></i>
</a>
</div>
</div>
</div>
</div>
<div class="mb-5 d-flex justify-content-between mt-5">
<div class="form-check mt-2">
<input class="form-check-input" type="checkbox" id="remember-me">
<label class="form-check-label" for="remember-me">
Remember Me
</label>
</div>
@if (Route::has('password.request'))
<a href="{{ route('password.request') }}" class="float-end mb-1 mt-2">
<span>Forgot Password?</span>
</a>
@endif
</div>
<button class="btn btn-primary d-grid w-100">
Sign in
</button>
</form>
<p class="text-center">
<span>New on our platform?</span>
@if (Route::has('register'))
<a href="{{ route('register') }}">
<span>Create an account</span>
</a>
@endif
</p>
<div class="divider my-5">
<div class="divider-text">or</div>
<!-- /Login -->
</div>
<div class="d-flex justify-content-center gap-2">
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-facebook">
<i class="tf-icons ri-facebook-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-twitter">
<i class="tf-icons ri-twitter-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-github">
<i class="tf-icons ri-github-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-google-plus">
<i class="tf-icons ri-google-fill"></i>
</a>
</div>
</div>
</div>
<!-- /Login -->
</div>
</div>
@endsection

View File

@ -1,7 +1,7 @@
@php
use App\Helpers\Helper;
use App\Services\ThemeHelper;
use Illuminate\Support\Facades\Route;
$configData = Helper::appClasses();
$configData = ThemeHelper::appClasses();
$customizerHidden = 'customizer-hide';
@endphp
@ -10,129 +10,144 @@
@section('title', 'Register Pages')
@section('page-style')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
@endsection
@section('content')
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<!-- /Left Text -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-register-illustration-'.$configData['style'].'.png') }}" class="auth-cover-illustration w-100" alt="auth-illustration" data-app-light-img="illustrations/auth-register-illustration-light.png" data-app-dark-img="illustrations/auth-register-illustration-dark.png" />
<img src="{{asset('assets/img/illustrations/auth-cover-register-mask-'.$configData['style'].'.png') }}" class="authentication-image" alt="mask" data-app-light-img="illustrations/auth-cover-register-mask-light.png" data-app-dark-img="illustrations/auth-cover-register-mask-dark.png" />
</div>
<!-- /Left Text -->
<!-- /Left Text -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-register-illustration-'.$configData['style'].'.png') }}"
class="auth-cover-illustration w-100" alt="auth-illustration"
data-app-light-img="illustrations/auth-register-illustration-light.png"
data-app-dark-img="illustrations/auth-register-illustration-dark.png"/>
<img src="{{asset('assets/img/illustrations/auth-cover-register-mask-'.$configData['style'].'.png') }}"
class="authentication-image" alt="mask"
data-app-light-img="illustrations/auth-cover-register-mask-light.png"
data-app-dark-img="illustrations/auth-cover-register-mask-dark.png"/>
</div>
<!-- /Left Text -->
<!-- Register -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Adventure starts here 🚀</h4>
<p class="mb-5">Make your app management easy and fun!</p>
<!-- Register -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Adventure starts here 🚀</h4>
<p class="mb-5">Make your app management easy and fun!</p>
<form id="formAuthentication" class="mb-5" action="{{ route('register') }}" method="POST">
@csrf
<div class="form-floating form-floating-outline mb-5">
<input type="text" class="form-control @error('name') is-invalid @enderror" id="username" name="name" placeholder="johndoe" autofocus value="{{ old('name') }}">
<label for="username">Username</label>
@error('name')
<span class="invalid-feedback" role="alert">
<form id="formAuthentication" class="mb-5" action="{{ route('register') }}" method="POST">
@csrf
<div class="form-floating form-floating-outline mb-5">
<input type="text" class="form-control @error('name') is-invalid @enderror" id="username"
name="name" placeholder="johndoe" autofocus value="{{ old('name') }}">
<label for="username">Username</label>
@error('name')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
</div>
<div class="form-floating form-floating-outline mb-5">
<input type="text" class="form-control @error('email') is-invalid @enderror" id="email" name="email" placeholder="john@example.com" value="{{ old('email') }}">
<label for="email">Email</label>
@error('email')
<span class="invalid-feedback" role="alert">
@enderror
</div>
<div class="form-floating form-floating-outline mb-5">
<input type="text" class="form-control @error('email') is-invalid @enderror" id="email"
name="email" placeholder="john@example.com" value="{{ old('email') }}">
<label for="email">Email</label>
@error('email')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
</div>
<div class="mb-5 form-password-toggle">
<div class="input-group input-group-merge @error('password') is-invalid @enderror">
<div class="form-floating form-floating-outline">
<input type="password" id="password" class="form-control @error('password') is-invalid @enderror" name="password" placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;" aria-describedby="password" />
<label for="password">Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
@enderror
</div>
<div class="mb-5 form-password-toggle">
<div class="input-group input-group-merge @error('password') is-invalid @enderror">
<div class="form-floating form-floating-outline">
<input type="password" id="password"
class="form-control @error('password') is-invalid @enderror" name="password"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password"/>
<label for="password">Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
</div>
<div class="mb-5 form-password-toggle">
<div class="input-group input-group-merge">
<div class="form-floating form-floating-outline">
<input type="password" id="password-confirm" class="form-control" name="password_confirmation" placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;" aria-describedby="password" />
<label for="password-confirm">Confirm Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
</div>
@if (Laravel\Jetstream\Jetstream::hasTermsAndPrivacyPolicyFeature())
<div class="mb-5">
<div class="form-check mt-2 @error('terms') is-invalid @enderror">
<input class="form-check-input @error('terms') is-invalid @enderror" type="checkbox" id="terms" name="terms" />
<label class="form-check-label" for="terms">
I agree to
<a href="{{ route('policy.show') }}" target="_blank">privacy policy</a> &
<a href="{{ route('terms.show') }}" target="_blank">terms</a>
</label>
</div>
@error('terms')
<div class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</div>
@enderror
</div>
@endif
<button type="submit" class="btn btn-primary d-grid w-100">Sign up</button>
</form>
@enderror
</div>
<div class="mb-5 form-password-toggle">
<div class="input-group input-group-merge">
<div class="form-floating form-floating-outline">
<input type="password" id="password-confirm" class="form-control"
name="password_confirmation"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password"/>
<label for="password-confirm">Confirm Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
</div>
@if (Laravel\Jetstream\Jetstream::hasTermsAndPrivacyPolicyFeature())
<div class="mb-5">
<div class="form-check mt-2 @error('terms') is-invalid @enderror">
<input class="form-check-input @error('terms') is-invalid @enderror" type="checkbox"
id="terms" name="terms"/>
<label class="form-check-label" for="terms">
I agree to
<a href="{{ route('policy.show') }}" target="_blank">privacy policy</a> &
<a href="{{ route('terms.show') }}" target="_blank">terms</a>
</label>
</div>
@error('terms')
<div class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</div>
@enderror
</div>
@endif
<button type="submit" class="btn btn-primary d-grid w-100">Sign up</button>
</form>
<p class="text-center">
<span>Already have an account?</span>
@if (Route::has('login'))
<a href="{{ route('login') }}">
<span>Sign in instead</span>
</a>
@endif
</p>
<p class="text-center">
<span>Already have an account?</span>
@if (Route::has('login'))
<a href="{{ route('login') }}">
<span>Sign in instead</span>
</a>
@endif
</p>
<div class="divider my-5">
<div class="divider-text">or</div>
<div class="divider my-5">
<div class="divider-text">or</div>
</div>
<div class="d-flex justify-content-center gap-2">
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-facebook">
<i class="tf-icons ri-facebook-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-twitter">
<i class="tf-icons ri-twitter-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-github">
<i class="tf-icons ri-github-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-google-plus">
<i class="tf-icons ri-google-fill"></i>
</a>
</div>
</div>
</div>
<!-- /Register -->
</div>
<div class="d-flex justify-content-center gap-2">
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-facebook">
<i class="tf-icons ri-facebook-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-twitter">
<i class="tf-icons ri-twitter-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-github">
<i class="tf-icons ri-github-fill"></i>
</a>
<a href="javascript:;" class="btn btn-icon rounded-circle btn-text-google-plus">
<i class="tf-icons ri-google-fill"></i>
</a>
</div>
</div>
</div>
<!-- /Register -->
</div>
</div>
@endsection

View File

@ -1,7 +1,7 @@
@php
use App\Helpers\Helper;
use App\Services\ThemeHelper;
use Illuminate\Support\Facades\Route;
$configData = Helper::appClasses();
$configData = ThemeHelper::appClasses();
$customizerHidden = 'customizer-hide';
@endphp
@ -10,85 +10,102 @@
@section('title', 'Reset Password')
@section('page-style')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
@endsection
@section('content')
<div class="position-relative">
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<div class="position-relative">
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-reset-password-illustration-'.$configData['style'].'.png') }}" class="auth-cover-illustration w-100" alt="auth-illustration" data-app-light-img="illustrations/auth-reset-password-illustration-light.png" data-app-dark-img="illustrations/auth-reset-password-illustration-dark.png" />
<img src="{{asset('assets/img/illustrations/auth-cover-reset-password-mask-'.$configData['style'].'.png') }}" class="authentication-image" alt="mask" data-app-light-img="illustrations/auth-cover-reset-password-mask-light.png" data-app-dark-img="illustrations/auth-cover-reset-password-mask-dark.png" />
</div>
<!-- /Left Section -->
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-reset-password-illustration-'.$configData['style'].'.png') }}"
class="auth-cover-illustration w-100" alt="auth-illustration"
data-app-light-img="illustrations/auth-reset-password-illustration-light.png"
data-app-dark-img="illustrations/auth-reset-password-illustration-dark.png"/>
<img src="{{asset('assets/img/illustrations/auth-cover-reset-password-mask-'.$configData['style'].'.png') }}"
class="authentication-image" alt="mask"
data-app-light-img="illustrations/auth-cover-reset-password-mask-light.png"
data-app-dark-img="illustrations/auth-cover-reset-password-mask-dark.png"/>
</div>
<!-- /Left Section -->
<!-- Reset Password -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Reset Password 🔒</h4>
<p class="mb-5">Your new password must be different from previously used passwords</p>
<form id="formAuthentication" class="mb-5" action="{{ route('password.update') }}" method="POST">
@csrf
<input type="hidden" name="token" value="{{ $request->route('token') }}">
<!-- Reset Password -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Reset Password 🔒</h4>
<p class="mb-5">Your new password must be different from previously used passwords</p>
<form id="formAuthentication" class="mb-5" action="{{ route('password.update') }}"
method="POST">
@csrf
<input type="hidden" name="token" value="{{ $request->route('token') }}">
<div class="form-floating form-floating-outline mb-5">
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email" name="email" placeholder="john@example.com" value="{{Request()->email}}" readonly />
<label for="email">Email</label>
@error('email')
<span class="invalid-feedback" role="alert">
<div class="form-floating form-floating-outline mb-5">
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email"
name="email" placeholder="john@example.com" value="{{Request()->email}}"
readonly/>
<label for="email">Email</label>
@error('email')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
</div>
<div class="mb-5 form-password-toggle">
<div class="input-group input-group-merge @error('password') is-invalid @enderror">
<div class="form-floating form-floating-outline">
<input type="password" id="password" class="form-control @error('password') is-invalid @enderror" name="password" placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;" aria-describedby="password" autofocus />
<label for="password">New Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
@enderror
</div>
<div class="mb-5 form-password-toggle">
<div class="input-group input-group-merge @error('password') is-invalid @enderror">
<div class="form-floating form-floating-outline">
<input type="password" id="password"
class="form-control @error('password') is-invalid @enderror"
name="password"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password" autofocus/>
<label for="password">New Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<span class="fw-medium">{{ $message }}</span>
</span>
@enderror
</div>
<div class="mb-5 form-password-toggle">
<div class="input-group input-group-merge">
<div class="form-floating form-floating-outline">
<input type="password" id="confirm-password" class="form-control" name="password_confirmation" placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;" aria-describedby="password" />
<label for="confirm-password">Confirm Password</label>
@enderror
</div>
<div class="mb-5 form-password-toggle">
<div class="input-group input-group-merge">
<div class="form-floating form-floating-outline">
<input type="password" id="confirm-password" class="form-control"
name="password_confirmation"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password"/>
<label for="confirm-password">Confirm Password</label>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
</div>
<button class="btn btn-primary d-grid w-100 mb-5">
Set new password
</button>
<div class="text-center">
@if (Route::has('login'))
<a href="{{ route('login') }}"
class="d-flex align-items-center justify-content-center">
<i class="ri-arrow-left-s-line scaleX-n1-rtl ri-20px me-1_5"></i>
Back to login
</a>
@endif
</div>
</form>
</div>
</div>
<span class="input-group-text cursor-pointer"><i class="ri-eye-off-line"></i></span>
</div>
<!-- /Reset Password -->
</div>
<button class="btn btn-primary d-grid w-100 mb-5">
Set new password
</button>
<div class="text-center">
@if (Route::has('login'))
<a href="{{ route('login') }}" class="d-flex align-items-center justify-content-center">
<i class="ri-arrow-left-s-line scaleX-n1-rtl ri-20px me-1_5"></i>
Back to login
</a>
@endif
</div>
</form>
</div>
</div>
<!-- /Reset Password -->
</div>
</div>
</div>
@endsection

View File

@ -1,7 +1,7 @@
@php
use App\Helpers\Helper;
use App\Services\ThemeHelper;
use Illuminate\Support\Facades\Route;
$configData = Helper::appClasses();
$configData = ThemeHelper::appClasses();
$customizerHidden = 'customizer-hide';
@endphp
@ -10,69 +10,82 @@
@section('title', 'Two Steps Verifications')
@section('page-style')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
@endsection
@section('content')
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-two-steps-illustration-'.$configData['style'].'.png') }}" class="auth-cover-illustration w-100" alt="auth-illustration" data-app-light-img="illustrations/auth-two-steps-illustration-light.png" data-app-dark-img="illustrations/auth-two-steps-illustration-dark.png" />
<img src="{{asset('assets/img/illustrations/auth-cover-register-mask-'.$configData['style'].'.png') }}" class="authentication-image" alt="mask" data-app-light-img="illustrations/auth-cover-register-mask-light.png" data-app-dark-img="illustrations/auth-cover-register-mask-dark.png" />
</div>
<!-- /Left Section -->
<!-- Two Steps Verification -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Two Step Verification 💬</h4>
<div x-data="{ recovery: false }">
<div class="mb-6" x-show="! recovery">
Please confirm access to your account by entering the authentication code provided by your authenticator application.
</div>
<div class="mb-6" x-show="recovery">
Please confirm access to your account by entering one of your emergency recovery codes.
</div>
<x-validation-errors class="mb-1" />
<form method="POST" action="{{ route('two-factor.login') }}">
@csrf
<div class="mb-5" x-show="! recovery">
<x-label class="form-label" value="{{ __('Code') }}" />
<x-input class="{{ $errors->has('code') ? 'is-invalid' : '' }}" type="text" inputmode="numeric" name="code" autofocus x-ref="code" autocomplete="one-time-code" />
<x-input-error for="code"></x-input-error>
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-two-steps-illustration-'.$configData['style'].'.png') }}"
class="auth-cover-illustration w-100" alt="auth-illustration"
data-app-light-img="illustrations/auth-two-steps-illustration-light.png"
data-app-dark-img="illustrations/auth-two-steps-illustration-dark.png"/>
<img src="{{asset('assets/img/illustrations/auth-cover-register-mask-'.$configData['style'].'.png') }}"
class="authentication-image" alt="mask"
data-app-light-img="illustrations/auth-cover-register-mask-light.png"
data-app-dark-img="illustrations/auth-cover-register-mask-dark.png"/>
</div>
<div class="mb-5" x-show="recovery">
<x-label class="form-label" value="{{ __('Recovery Code') }}" />
<x-input class="{{ $errors->has('recovery_code') ? 'is-invalid' : '' }}" type="text" name="recovery_code" x-ref="recovery_code" autocomplete="one-time-code" />
<x-input-error for="recovery_code"></x-input-error>
<!-- /Left Section -->
<!-- Two Steps Verification -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Two Step Verification 💬</h4>
<div x-data="{ recovery: false }">
<div class="mb-6" x-show="! recovery">
Please confirm access to your account by entering the authentication code provided by your
authenticator application.
</div>
<div class="mb-6" x-show="recovery">
Please confirm access to your account by entering one of your emergency recovery codes.
</div>
<x-validation-errors class="mb-1"/>
<form method="POST" action="{{ route('two-factor.login') }}">
@csrf
<div class="mb-5" x-show="! recovery">
<x-label class="form-label" value="{{ __('Code') }}"/>
<x-input class="{{ $errors->has('code') ? 'is-invalid' : '' }}" type="text"
inputmode="numeric" name="code" autofocus x-ref="code"
autocomplete="one-time-code"/>
<x-input-error for="code"></x-input-error>
</div>
<div class="mb-5" x-show="recovery">
<x-label class="form-label" value="{{ __('Recovery Code') }}"/>
<x-input class="{{ $errors->has('recovery_code') ? 'is-invalid' : '' }}" type="text"
name="recovery_code" x-ref="recovery_code" autocomplete="one-time-code"/>
<x-input-error for="recovery_code"></x-input-error>
</div>
<div class="d-flex justify-content-end gap-2">
<div x-show="! recovery"
x-on:click="recovery = true; $nextTick(() => { $refs.recovery_code.focus()})">
<button type="button" class="btn btn-outline-secondary">Use a recovery code</button>
</div>
<div x-cloak x-show="recovery"
x-on:click="recovery = false; $nextTick(() => { $refs.code.focus() })">
<button type="button" class="btn btn-outline-secondary">Use an authentication code
</button>
</div>
<x-button class="px-3">Log in</x-button>
</div>
</form>
</div>
</div>
</div>
<div class="d-flex justify-content-end gap-2">
<div x-show="! recovery" x-on:click="recovery = true; $nextTick(() => { $refs.recovery_code.focus()})">
<button type="button" class="btn btn-outline-secondary">Use a recovery code</button>
</div>
<div x-cloak x-show="recovery" x-on:click="recovery = false; $nextTick(() => { $refs.code.focus() })">
<button type="button" class="btn btn-outline-secondary">Use an authentication code</button>
</div>
<x-button class="px-3">Log in</x-button>
</div>
</form>
<!-- /Two Steps Verification -->
</div>
</div>
</div>
<!-- /Two Steps Verification -->
</div>
</div>
@endsection

View File

@ -1,8 +1,8 @@
@php
use App\Helpers\Helper;
use App\Services\ThemeHelper;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
$configData = Helper::appClasses();
$configData = ThemeHelper::appClasses();
$customizerHidden = 'customizer-hide';
@endphp
@ -11,56 +11,68 @@
@section('title', 'Verify Email')
@section('page-style')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
{{-- Page Css files --}}
@vite('resources/assets/vendor/scss/pages/page-auth.scss')
@endsection
@section('content')
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<div class="authentication-wrapper authentication-cover">
<!-- Logo -->
<a href="{{url('/')}}" class="auth-cover-brand d-flex align-items-center gap-2">
<span
class="app-brand-logo demo">@include('_partials.macros',["width"=>25,"withbg"=>'var(--bs-primary)'])</span>
<span class="app-brand-text demo text-heading fw-semibold">{{config('variables.templateName')}}</span>
</a>
<!-- /Logo -->
<div class="authentication-inner row m-0">
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img src="{{asset('assets/img/illustrations/auth-verify-email-illustration-'.$configData['style'].'.png') }}" class="auth-cover-illustration w-100" alt="auth-illustration" data-app-light-img="illustrations/auth-verify-email-illustration-light.png" data-app-dark-img="illustrations/auth-verify-email-illustration-dark.png" />
<img src="{{asset('assets/img/illustrations/auth-cover-login-mask-'.$configData['style'].'.png') }}" class="authentication-image" alt="mask" data-app-light-img="illustrations/auth-cover-login-mask-light.png" data-app-dark-img="illustrations/auth-cover-login-mask-dark.png" />
</div>
<!-- /Left Section -->
<!-- /Left Section -->
<div class="d-none d-lg-flex col-lg-7 col-xl-8 align-items-center justify-content-center p-12 pb-2">
<img
src="{{asset('assets/img/illustrations/auth-verify-email-illustration-'.$configData['style'].'.png') }}"
class="auth-cover-illustration w-100" alt="auth-illustration"
data-app-light-img="illustrations/auth-verify-email-illustration-light.png"
data-app-dark-img="illustrations/auth-verify-email-illustration-dark.png"/>
<img src="{{asset('assets/img/illustrations/auth-cover-login-mask-'.$configData['style'].'.png') }}"
class="authentication-image" alt="mask"
data-app-light-img="illustrations/auth-cover-login-mask-light.png"
data-app-dark-img="illustrations/auth-cover-login-mask-dark.png"/>
</div>
<!-- /Left Section -->
<!-- Verify email -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Verify your email ✉️</h4>
<!-- Verify email -->
<div
class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg position-relative py-sm-12 px-12 py-6">
<div class="w-px-400 mx-auto pt-5 pt-lg-0">
<h4 class="mb-1">Verify your email ✉️</h4>
@if (session('status') == 'verification-link-sent')
<div class="alert alert-success" role="alert">
<div class="alert-body">
A new verification link has been sent to the email address you provided during registration.
</div>
@if (session('status') == 'verification-link-sent')
<div class="alert alert-success" role="alert">
<div class="alert-body">
A new verification link has been sent to the email address you provided during
registration.
</div>
</div>
@endif
<p class="text-start mb-0">
Account activation link sent to your email address: <span
class="h6">{{Auth::user()->email}}</span> Please follow the link inside to continue.
</p>
<div class="mt-5 d-flex flex-column gap-2">
<form method="POST" action="{{ route('verification.send') }}">
@csrf
<button type="submit" class="w-100 btn btn-label-secondary">click here to request another
</button>
</form>
<form method="POST" action="{{route('logout')}}">
@csrf
<button type="submit" class="w-100 btn btn-danger">Log Out</button>
</form>
</div>
</div>
</div>
<!-- / Verify email -->
</div>
@endif
<p class="text-start mb-0">
Account activation link sent to your email address: <span class="h6">{{Auth::user()->email}}</span> Please follow the link inside to continue.
</p>
<div class="mt-5 d-flex flex-column gap-2">
<form method="POST" action="{{ route('verification.send') }}">
@csrf
<button type="submit" class="w-100 btn btn-label-secondary">click here to request another</button>
</form>
<form method="POST" action="{{route('logout')}}">
@csrf
<button type="submit" class="w-100 btn btn-danger">Log Out</button>
</form>
</div>
</div>
</div>
<!-- / Verify email -->
</div>
</div>
@endsection