firstcommit

This commit is contained in:
2025-08-17 16:23:14 +05:45
commit 76bf4c0a18
2648 changed files with 362795 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Admin\app\Http\Controllers;
use App\Http\Controllers\Controller;
use Modules\Blog\app\Models\Blog;
use Modules\ContactUs\app\Models\ContactUs;
use Modules\Post\app\Models\Post;
use Modules\Service\app\Models\Service;
use Modules\Subscription\app\Models\Subscription;
use Modules\TeamMember\app\Models\TeamMember;
class AdminController extends Controller
{
//-- Dashboard
public function dashboard()
{
$data = [
'totalTeam' => TeamMember::count(),
'totalBlog' => Blog::count(),
'totalPost' => Post::count(),
'totalService' => Service::count(),
'totalSubscriber' => Subscription::count(),
'totalContact' => ContactUs::count(),
];
return view('admin::dashboard', $data);
}
}

View File

@@ -0,0 +1,74 @@
<?php
namespace Modules\Admin\app\Http\Controllers\Auth;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\RedirectResponse;
use Modules\AdminUser\app\Models\AdminUser;
class AuthController extends Controller
{
/**
* Display a listing of the resource.
*/
public function login()
{
if(Auth::check()){
return redirect()->route('dashboard');
}
return view('admin::auth.pages.login');
}
public function postLogin(Request $request){
try {
$rememberMe = $request->has('remember') ? true : false;
//-- Check if user email is valid
$adminUser = AdminUser::where('email', $request['email'])->first();
if (!$adminUser) {
toastr()->error('Incorrect Credential.');
return back();
}
//-- Validate Credentials
if (!Hash::check($request['password'], $adminUser->password)) {
toastr()->error('Incorrect Password.');
return back();
}
//-- Login User
Auth::login($adminUser, $rememberMe);
$request->session()->regenerate();
toastr()->success('You have successfully logged in');
return redirect()->route('dashboard');
} catch (\Throwable $th) {
report($th);
toastr()->error('Something went wrong.');
return redirect()->back();
}
}
public function logout(Request $request)
{
//--log out process
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
toastr()->success('You have been logged out');
return redirect()->route("login");
}
}

View File

View File

View File

View File

@@ -0,0 +1,114 @@
<?php
namespace Modules\Admin\app\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AdminServiceProvider extends ServiceProvider
{
protected string $moduleName = 'Admin';
protected string $moduleNameLower = 'admin';
/**
* Boot the application events.
*/
public function boot(): void
{
$this->registerCommands();
$this->registerCommandSchedules();
$this->registerTranslations();
$this->registerConfig();
$this->registerViews();
$this->loadMigrationsFrom(module_path($this->moduleName, 'database/migrations'));
}
/**
* Register the service provider.
*/
public function register(): void
{
$this->app->register(RouteServiceProvider::class);
}
/**
* Register commands in the format of Command::class
*/
protected function registerCommands(): void
{
// $this->commands([]);
}
/**
* Register command Schedules.
*/
protected function registerCommandSchedules(): void
{
// $this->app->booted(function () {
// $schedule = $this->app->make(Schedule::class);
// $schedule->command('inspire')->hourly();
// });
}
/**
* Register translations.
*/
public function registerTranslations(): void
{
$langPath = resource_path('lang/modules/'.$this->moduleNameLower);
if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
$this->loadJsonTranslationsFrom($langPath);
} else {
$this->loadTranslationsFrom(module_path($this->moduleName, 'lang'), $this->moduleNameLower);
$this->loadJsonTranslationsFrom(module_path($this->moduleName, 'lang'));
}
}
/**
* Register config.
*/
protected function registerConfig(): void
{
$this->publishes([module_path($this->moduleName, 'config/config.php') => config_path($this->moduleNameLower.'.php')], 'config');
$this->mergeConfigFrom(module_path($this->moduleName, 'config/config.php'), $this->moduleNameLower);
}
/**
* Register views.
*/
public function registerViews(): void
{
$viewPath = resource_path('views/modules/'.$this->moduleNameLower);
$sourcePath = module_path($this->moduleName, 'resources/views');
$this->publishes([$sourcePath => $viewPath], ['views', $this->moduleNameLower.'-module-views']);
$this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
$componentNamespace = str_replace('/', '\\', config('modules.namespace').'\\'.$this->moduleName.'\\'.config('modules.paths.generator.component-class.path'));
Blade::componentNamespace($componentNamespace, $this->moduleNameLower);
}
/**
* Get the services provided by the provider.
*/
public function provides(): array
{
return [];
}
private function getPublishableViewPaths(): array
{
$paths = [];
foreach (config('view.paths') as $path) {
if (is_dir($path.'/modules/'.$this->moduleNameLower)) {
$paths[] = $path.'/modules/'.$this->moduleNameLower;
}
}
return $paths;
}
}

View File

@@ -0,0 +1,59 @@
<?php
namespace Modules\Admin\app\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* The module namespace to assume when generating URLs to actions.
*/
protected string $moduleNamespace = 'Modules\Admin\app\Http\Controllers';
/**
* Called before routes are registered.
*
* Register any model bindings or pattern based filters.
*/
public function boot(): void
{
parent::boot();
}
/**
* Define the routes for the application.
*/
public function map(): void
{
$this->mapApiRoutes();
$this->mapWebRoutes();
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*/
protected function mapWebRoutes(): void
{
Route::middleware('web')
->namespace($this->moduleNamespace)
->group(module_path('Admin', '/routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*/
protected function mapApiRoutes(): void
{
Route::prefix('api')
->middleware('api')
->namespace($this->moduleNamespace)
->group(module_path('Admin', '/routes/api.php'));
}
}

View File

@@ -0,0 +1,31 @@
{
"name": "nwidart/admin",
"description": "",
"authors": [
{
"name": "Nicolas Widart",
"email": "n.widart@gmail.com"
}
],
"extra": {
"laravel": {
"providers": [],
"aliases": {
}
}
},
"autoload": {
"psr-4": {
"Modules\\Admin\\": "",
"Modules\\Admin\\App\\": "app/",
"Modules\\Admin\\Database\\Factories\\": "database/factories/",
"Modules\\Admin\\Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Modules\\Admin\\Tests\\": "tests/"
}
}
}

View File

View File

@@ -0,0 +1,5 @@
<?php
return [
'name' => 'Admin',
];

View File

View File

@@ -0,0 +1,16 @@
<?php
namespace Modules\Admin\database\seeders;
use Illuminate\Database\Seeder;
class AdminDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// $this->call([]);
}
}

View File

11
Modules/Admin/module.json Normal file
View File

@@ -0,0 +1,11 @@
{
"name": "Admin",
"alias": "admin",
"description": "",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Admin\\app\\Providers\\AdminServiceProvider"
],
"files": []
}

View File

@@ -0,0 +1,15 @@
{
"private": true,
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build"
},
"devDependencies": {
"axios": "^1.1.2",
"laravel-vite-plugin": "^0.7.5",
"sass": "^1.69.5",
"postcss": "^8.3.7",
"vite": "^4.0.0"
}
}

View File

View File

View File

View File

@@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="en" class="light-style customizer-hide" dir="ltr" data-theme="theme-default"
data-assets-path="../../assets/" data-template="vertical-menu-template">
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
<title>Login Cover - Pages | {{ config('app.name') }}</title>
<meta name="description" content="" />
<!-- Favicon -->
<link rel="icon" type="image/x-icon" href="../../assets/img/favicon/favicon.ico" />
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Rubik:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
rel="stylesheet" />
<!-- Icons -->
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/fonts/boxicons.css') }}" />
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/fonts/fontawesome.css') }}" />
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/fonts/flag-icons.css') }}" />
<!-- Core CSS -->
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/css/rtl/core.css') }}"
class="template-customizer-core-css" />
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/css/rtl/theme-default.css') }}"
class="template-customizer-theme-css" />
{{-- <link rel="stylesheet" href="{{asset('backend/theme/assets/css/demo.css')}}" /> --}}
<link rel="stylesheet"
href="{{ asset('backend/theme/assets/vendor/libs/formvalidation/dist/css/formValidation.min.css') }}" />
<!-- Page CSS -->
<!-- Page -->
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/css/pages/page-auth.css') }}" />
<!-- Helpers -->
<!-- vite -->
@vite(['resources/js/backend/app.js'])
</head>
<body>
<!-- Content -->
@yield('content')
<!-- / Content -->
<!-- Vendors JS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="../../assets/vendor/libs/formvalidation/dist/js/FormValidation.min.js"></script>
<script src="../../assets/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js"></script>
<script src="../../assets/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js"></script>
</body>
</html>

View File

@@ -0,0 +1,54 @@
@extends('admin::auth.layouts.master')
@section('content')
<div class="authentication-wrapper authentication-cover">
<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">
<div class="flex-row text-center mx-auto">
<img src="{{ asset('backend/uploads/auth/login.png') }}" alt="Auth Cover Bg color" width="520"
class="img-fluid authentication-cover-img" data-app-light-img="pages/login-light.png"
data-app-dark-img="pages/login-dark.png" />
</div>
</div>
<!-- /Left Text -->
<!-- Login -->
<div class="d-flex col-12 col-lg-5 col-xl-4 align-items-center authentication-bg p-sm-5 p-4">
<div class="w-px-400 mx-auto">
<h4 class="mb-2">Welcome to {{ env('APP_NAME') }}! 👋</h4>
<p class="mb-4">Please sign-in to your account and start the adventure</p>
<form id="formAuthentication" class="mb-3" action="{{ route('login.post') }}" method="POST">
@csrf
<div class="mb-3">
<label for="email" class="form-label">Email or Username</label>
<input type="text" class="form-control" id="email" name="email"
placeholder="Enter your email or username" autofocus />
</div>
<div class="mb-3 form-password-toggle">
<div class="d-flex justify-content-between">
<label class="form-label" for="password">Password</label>
</div>
<div x-data="{ showPassword: false }" class="input-group input-group-merge">
<input type="password" id="password" class="form-control passwordField" name="password"
placeholder="&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;&#xb7;"
aria-describedby="password" x-bind:type="showPassword ? 'text' : 'password'" />
<span class="input-group-text cursor-pointer" x-on:click="showPassword = !showPassword">
<i x-bind:class="showPassword ? 'bx bx-show' : 'bx bx-hide'"></i>
</span>
</div>
</div>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="remember-me" />
<label class="form-check-label" for="remember-me"> Remember Me </label>
</div>
</div>
<button class="btn btn-primary d-grid w-100">Sign In</button>
</form>
</div>
<!-- /Login -->
</div>
</div>
@endsection

View File

@@ -0,0 +1,143 @@
@extends('admin::layouts.master')
@section('title', 'Dashboard')
@section('content')
<div class="row">
<div class="col-md-5 col-12 mb-4">
<div class="card h-100">
<div class="card-header">
<h3 class="card-title mb-2">Welcome {{ auth()->user()->name }}!</h3>
<span class="d-block mb-4 text-nowrap">You can now start the adventure</span>
</div>
<div class="card-body">
<div class="row align-items-end">
<div class="col-6">
<h1 class="display-6 text-primary mb-2 pt-4 pb-1">120</h1>
<small class="d-block mb-3">You have 57.6% <br>more visitor this month.</small>
<a href="{{ route('home') }}" target="_blnak" class="btn btn-sm btn-primary">View Site</a>
</div>
<div class="col-6">
<img src="{{ asset('backend/theme/assets/img/illustrations/man-with-laptop-dark.png') }}" width="170" height="150"
class="rounded-start" alt="View Sales" data-app-light-img="illustrations/man-with-laptop-dark.png"
data-app-dark-img="illustrations/prize-dark.png">
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-7 col-md-12 col-sm-12">
<div class="row">
<div class="col-md-6 col-sm-6 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="avatar">
<span class="avatar-initial rounded-circle bg-label-primary"><i
class="bx bxs-user-account fs-4"></i></span>
</div>
<div class="card-info">
<h5 class="card-title mb-0 me-2">{{$totalTeam??'0'}}</h5>
<small class="text-muted">Total Team</small>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 col-sm-6 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="avatar">
<span class="avatar-initial rounded-circle bg-label-warning"><i
class="bx bx-package fs-4"></i></span>
</div>
<div class="card-info">
<h5 class="card-title mb-0 me-2">{{$totalBlog??''}}</h5>
<small class="text-muted">Blogs</small>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 col-sm-6 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="avatar">
<span class="avatar-initial rounded-circle bg-label-success"><i
class="bx bx-image-alt fs-4"></i></span>
</div>
<div class="card-info">
<h5 class="card-title mb-0 me-2">{{ $totalPost??'' }}</h5>
<small class="text-muted">Posts</small>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 col-sm-6 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="avatar">
<span class="avatar-initial rounded-circle bg-label-danger"><i
class="bx bxs-component fs-4"></i></span>
</div>
<div class="card-info">
<h5 class="card-title mb-0 me-2">{{$totalService??'0'}}</h5>
<small class="text-muted">Services</small>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 col-sm-6 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="avatar">
<span class="avatar-initial rounded-circle bg-label-info"><i
class="bx bx-user fs-4"></i></span>
</div>
<div class="card-info">
<h5 class="card-title mb-0 me-2">{{$totalSubscriber??'0'}}</h5>
<small class="text-muted">Subscribers</small>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 col-sm-6 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="avatar">
<span class="avatar-initial rounded-circle bg-label-warning">
<i class='bx bxs-contact'></i>
</span>
</div>
<div class="card-info">
<h5 class="card-title mb-0 me-2">{{$totalContact??'0'}}</h5>
<small class="text-muted">Contact</small>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,8 @@
@extends('errors.layout.master')
@section('title', '404 Page')
@section('error_code', '404')
@section('error_title', 'Look like you\'re lost')
@section('error_desc', 'the page you are looking for not avaible!')
@section('error_redirect_btn_title', 'Go to Home')
@section('error_redirect_btn_link', '/')

View File

@@ -0,0 +1,8 @@
@extends('errors.layout.master')
@section('title', '419 Page')
@section('error_code', '419')
@section('error_title', 'Look like your session expired')
@section('error_desc', 'Please hard refresh the page or relogin to create new session !')
@section('error_redirect_btn_title', 'Go to Home')
@section('error_redirect_btn_link', '/')

View File

@@ -0,0 +1,8 @@
@extends('errors.layout.master')
@section('title', '500 Page')
@section('error_code', '500')
@section('error_title', 'Look like we\'re lost')
@section('error_desc', 'Oops Something went wrong contact our customer service !')
@section('error_redirect_btn_title', 'Go to Home')
@section('error_redirect_btn_link', '/')

View File

@@ -0,0 +1,42 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- TITLE -->
<title>@yield('title', 'Lapsi Cloud')</title>
<!-- FAVICON -->
<link rel="shortcut icon" type="image/x-icon" href="{{ asset('images/auth/logo_icon.svg') }}" />
<!-- FONTS -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Arvo">
<!-- BOOTSTRAP CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="/errors/404.css">
</head>
<body>
<section class="page_404">
<div class="container">
<div class="row">
<div class="col-sm-12 ">
<div class="col-sm-10 col-sm-offset-1 text-center">
<div class="four_zero_four_bg" style="background-image: url(/images/errors/person_prem.gif);">
<h1 class="text-center ">@yield('error_code', '404')</h1>
</div>
<div class="contant_box_404">
<h3 class="h2">
@yield('error_title', 'Look like you\'re lost')
</h3>
<p>@yield('error_desc', 'the page you are looking for not avaible!') </p>
<a href="@yield('error_redirect_btn_link', '#')" class="link_404">@yield('error_redirect_btn_title', 'Go to Home')</a>
</div>
</div>
</div>
</div>
</div>
</section>
</body>
</html>

View File

@@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}" class="light-style layout-navbar-fixed layout-menu-fixed"
dir="ltr" data-theme="theme-default" data-assets-path="../../assets/"
data-template="vertical-menu-template-no-customizer">
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="description" content="" />
<title>@yield('title') | {{ config('app.name') }}</title>
<!-- Favicon -->
<link rel="icon" type="image/x-icon" href=" {{ $siteLogo ?? '' }}" />
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Rubik:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
rel="stylesheet" />
<!-- Icons -->
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/fonts/boxicons.css') }}" />
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/fonts/fontawesome.css') }}" />
{{-- <link rel="stylesheet" href="{{ asset('assets/vendor/fonts/flag-icons.css') }}" /> --}}
<!-- Core CSS -->
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/css/rtl/core.css') }}" />
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/css/rtl/theme-semi-dark.css') }}" />
<link rel="stylesheet" href="{{ asset('backend/theme/assets/css/demo.css') }}" />
<!-- Page CSS -->
<!-- Vendors CSS -->
<link rel="stylesheet"
href="{{ asset('backend/theme/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}" />
<!-- Helpers -->
<script src="{{ asset('backend/theme/assets/vendor/js/helpers.js') }}"></script>
<script src="{{ asset('backend/theme/assets/js/config.js') }}"></script>
<!-- vite -->
@vite(['resources/js/backend/app.js', 'resources/scss/backend/app.scss'])
@stack('required-styles')
</head>
<body>
{{-- Loader --}}
<div x-data="{ loading: false }" x-show="loading" class="loader-container loader"></div>
<!-- Layout wrapper -->
<div class="layout-wrapper layout-content-navbar">
<div class="layout-container">
{{-- sidebar --}}
@include('admin::layouts.partials.sidebar')
<!-- / sidebar -->
<!-- Layout container -->
<div class="layout-page">
<!-- Navbar -->
@include('admin::layouts.partials.header')
<!-- / Navbar -->
<!-- Content wrapper -->
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 container-p-y">
@yield('breadcrumb')
@yield('content')
</div>
<!-- / Content -->
<!-- Footer -->
@include('admin::layouts.partials.footer')
<!-- / Footer -->
<div class="content-backdrop fade"></div>
</div>
<!-- Content wrapper -->
</div>
<!-- / Layout page -->
</div>
<!-- Overlay -->
<div class="layout-overlay layout-menu-toggle"></div>
<!-- Drag Target Area To SlideIn Menu On Small Screens -->
<div class="drag-target"></div>
</div>
<!-- / Layout wrapper -->
<!-- Core JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="{{ asset('backend/theme/assets/vendor/libs/jquery/jquery.js') }}"></script>
<script src="{{ asset('backend/theme/assets/vendor/libs/popper/popper.js') }}"></script>
<script src="{{ asset('backend/theme/assets/vendor/js/bootstrap.js') }}"></script>
<script src="{{ asset('backend/theme/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
<script src="{{ asset('backend/theme/assets/vendor/js/menu.js') }}"></script>
<!-- Main JS -->
<script src="{{ asset('backend/theme/assets/js/main.js') }}"></script>
@stack('required-scripts')
</body>
</html>

View File

@@ -0,0 +1,15 @@
<div class="page-header">
{{-- <h3 class="page-title">{{ $breadcrumbData[0]['title'] }}</h3> --}}
<ol class="breadcrumb breadcrumb-style1">
@foreach ($breadcrumbData as $key => $breadcrumb)
@if ($key > 0)
@if ($breadcrumb['link'])
<li class="breadcrumb-item"><a href="{{ $breadcrumb['link'] }}">{{ $breadcrumb['title'] }}</a></li>
@else
<li class="breadcrumb-item active" aria-current="page">{{ $breadcrumb['title'] }}</li>
@endif
@endif
@endforeach
</ol>
</div>

View File

@@ -0,0 +1,26 @@
<footer class="content-footer footer bg-footer-theme">
<div
class="container-fluid d-flex flex-wrap justify-content-between py-2 flex-md-row flex-column">
<div class="mb-2 mb-md-0">
Copyright ©
<script>
document.write(new Date().getFullYear());
</script>
, Made with ❤️ by
<a href="https://jhigutech.com" target="_blank"
class="footer-link fw-semibold">Jhigu Technology</a>
</div>
{{-- <div>
<a href="https://themeforest.net/licenses/standard" class="footer-link me-4"
target="_blank">License</a>
<a href="https://1.envato.market/pixinvent_portfolio" target="_blank"
class="footer-link me-4">More Themes</a>
<a href="https://pixinvent.com/demo/frest-clean-bootstrap-admin-dashboard-template/documentation-bs5/"
target="_blank" class="footer-link me-4">Documentation</a>
<a href="https://pixinvent.ticksy.com/" target="_blank"
class="footer-link d-none d-sm-inline-block">Support</a>
</div> --}}
</div>
</footer>

View File

@@ -0,0 +1,88 @@
<nav class="layout-navbar navbar navbar-expand-xl align-items-center bg-navbar-theme" id="layout-navbar">
<div class="container-fluid">
<div class="layout-menu-toggle navbar-nav align-items-xl-center me-3 me-xl-0 d-xl-none">
<a class="nav-item nav-link px-0 me-xl-4" href="javascript:void(0)">
<i class="bx bx-menu bx-sm"></i>
</a>
</div>
<div class="navbar-nav-right d-flex align-items-center" id="navbar-collapse">
<!-- Search -->
<div class="navbar-nav align-items-center">
<div class="nav-item navbar-search-wrapper mb-0">
<a class="nav-item nav-link search-toggler px-0" href="javascript:void(0);">
<i class="bx bx-search-alt bx-sm"></i>
<span class="d-none d-md-inline-block text-muted">Search (Ctrl+/)</span>
</a>
</div>
</div>
<!-- /Search -->
<ul class="navbar-nav flex-row align-items-center ms-auto">
<!-- Style Switcher -->
<li class="nav-item me-2 me-xl-0 d-none">
<a class="nav-link style-switcher-toggle hide-arrow" href="javascript:void(0);">
<i class="bx bx-sm"></i>
</a>
</li>
<!--/ Style Switcher -->
<!-- User -->
<li class="nav-item navbar-dropdown dropdown-user dropdown">
<a class="nav-link dropdown-toggle hide-arrow" href="javascript:void(0);" data-bs-toggle="dropdown">
<div class="avatar avatar-online">
<img src="{{ asset('backend/theme/assets/img/avatars/1.png') }}" alt
class="rounded-circle" />
</div>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li>
<a class="dropdown-item">
<div class="d-flex">
<div class="flex-shrink-0 me-3">
<div class="avatar avatar-online">
<img src="{{ asset('backend/theme/assets/img/avatars/1.png') }}" alt
class="rounded-circle" />
</div>
</div>
<div class="flex-grow-1">
<span class="fw-semibold d-block lh-1">
{{ auth()->check() ? auth()->user()->name : 'Anonymous' }}</span>
<small>Admin</small>
</div>
</div>
</a>
</li>
<li>
<div class="dropdown-divider"></div>
<li>
<a class="dropdown-item" href="{{ route('home') }}" target="_blank">
<i class="bx bx-globe me-2"></i>
<span class="align-middle">Website</span>
</a>
</li>
<li>
<form method="POST" action="{{ route('logout') }}">
@csrf
<button type="submit" class="dropdown-item" href="{{ route('logout') }}">
<i class="bx bx-power-off me-2"></i>
<span class="align-middle">Sign Out</span>
</button>
</form>
</li>
</ul>
</li>
<!--/ User -->
</ul>
</div>
<!-- Search Small Screens -->
<div class="navbar-search-wrapper search-input-wrapper d-none">
<input type="text" class="form-control search-input container-fluid border-0" placeholder="Search..."
aria-label="Search..." />
<i class="bx bx-x bx-sm search-toggler cursor-pointer"></i>
</div>
</div>
</nav>
<!-- / Navbar -->

View File

@@ -0,0 +1,31 @@
@if ($paginator->hasPages())
<ul class="pagination justify-content-end">
@if ($paginator->onFirstPage())
<li class="page-item prev disabled"><a class="page-link"><i class="tf-icon bx bx-chevron-left"></i></a></li>
@else
<li class="page-item prev"><a class="page-link" href="{{ $paginator->previousPageUrl() }}"><i class="tf-icon bx bx-chevron-left"></i></a></li>
@endif
@foreach ($elements as $element)
@if (is_string($element))
<li class="page-item disabled"><span>{{ $element }}</span></li>
@endif
@if (is_array($element))
@foreach ($element as $page => $url)
@if ($page == $paginator->currentPage())
<li class="page-item active"><a class="page-link"><span>{{ $page }}</span></a></li>
@else
<li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
@endif
@endforeach
@endif
@endforeach
@if ($paginator->hasMorePages())
<li class="page-item next"><a class="page-link" href="{{ $paginator->nextPageUrl() }}"><i class="tf-icon bx bx-chevron-right"></i></a></li>
@else
<li class="page-item next disabled"><a class="page-link"><i class="tf-icon bx bx-chevron-right"></i></a></li>
@endif
</ul>
@endif

View File

@@ -0,0 +1,148 @@
<aside id="layout-menu" class="layout-menu menu-vertical menu bg-menu-theme">
<div class="app-brand demo">
<a href="{{ route('dashboard') }}" class="app-brand-link">
<span class="app-brand-text demo menu-text fw-bold ms-2">
<img src="{{ $siteLogo ?? '' }}" alt="Site Name" width="45" /></span>
</a>
<a href="javascript:void(0);" class="layout-menu-toggle menu-link text-large ms-auto">
<i class="bx menu-toggle-icon d-none d-xl-block fs-4 align-middle"></i>
<i class="bx bx-x d-block d-xl-none bx-sm align-middle"></i>
</a>
</div>
<div class="menu-divider mt-0"></div>
{{-- <div class="menu-inner-shadow"></div> --}}
<ul class="menu-inner py-1">
<li class="menu-item {{ Request::is('apanel/dashboard') ? 'active' : '' }}">
<a href="{{ route('dashboard') }}" class="menu-link ">
<i class="menu-icon bx bx-tachometer"></i>
<div data-i18n="Dashboard">Dashboard</div>
</a>
</li>
<!-- Components -->
<li class="menu-header small text-uppercase">
<span class="menu-header-text">Components</span>
</li>
{{-- <li class="menu-item {{ Request::is('apanel/cms/banners') ? 'active' : '' }}">
<a href="{{ route('cms.banners.index') }}" class="menu-link">
<i class="menu-icon bx bx-image"></i>
<div data-i18n="Banner">Banner</div>
</a>
</li> --}}
<li class="menu-item {{ Request::segment(2) == 'transformations' ? 'active' : '' }}">
<a href="{{ route('transformation.index') }}" class="menu-link">
<i class="menu-icon bx bx-transfer-alt"></i>
<div data-i18n="Transformation">Transformation</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/cms/testimonial') ? 'active' : '' }}">
<a href="{{ route('cms.testimonials.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bx-comment-detail'></i>
<div data-i18n="Testimonial">Testimonial</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/cms/team-members*') ? 'active' : '' }}">
<a href="{{ route('cms.team-members.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bxs-user-detail'></i>
<div data-i18n="Team">Team</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/cms/clients*') ? 'active' : '' }}">
<a href="{{ route('cms.clients.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bx-cube'></i>
<div data-i18n="List">Client</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/cms/services*') ? 'active' : '' }}">
<a href="{{ route('cms.services.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bx-cube'></i>
<div data-i18n="Service">Service</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/cms/blogs*') ? 'active' : '' }}">
<a href="{{ route('cms.blogs.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bxl-blogger'></i>
<div data-i18n="Blog">Blog</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/cms/galleries*') ? 'active' : '' }}">
<a href="{{ route('cms.galleries.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bx-images'></i>
<div data-i18n="Gallery">Gallery</div>
</a>
</li>
<!-- Apps & Pages -->
<li class="menu-header small text-uppercase">
<span class="menu-header-text">Apps &amp; Pages</span>
</li>
<li class="menu-item {{ Request::is('apanel/cms/pages*') ? 'active' : '' }}">
<a href="{{ route('cms.pages.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bx-file-blank'></i>
<div data-i18n="Page">Page</div>
</a>
</li>
<li class="menu-item {{ Request::segment(2) == 'posts' ? 'active' : '' }}">
<a href="{{ route('post.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bx-intersect'></i>
<div data-i18n="Post">Post</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/cms/faqs*') ? 'active' : '' }}">
<a href="{{ route('cms.faqs.index') }}" class="menu-link menu-link">
<i class='menu-icon bx bx-question-mark'></i>
<div data-i18n="FAQ">FAQ</div>
</a>
</li>
{{-- Appointment --}}
<li class="menu-item {{ Request::is('apanel/appointment*') ? 'active' : '' }}">
<a href="{{ route('cms.appointment.index') }}" class="menu-link">
<i class="menu-icon tf-icons bx bx-door-open"></i>
<div data-i18n="Appointment">Appointment</div>
</a>
</li>
{{-- Consultation --}}
<li class="menu-item {{ Request::is('apanel/consultation*') ? 'active' : '' }}">
<a href="{{ route('cms.consultation.index') }}" class="menu-link">
<i class="menu-icon tf-icons bx bx-phone-call"></i>
<div data-i18n="consultation">Consultation</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/mail*') ? 'active' : '' }}">
<a href="{{ route('cms.contactUs.index') }}" class="menu-link">
<i class="menu-icon tf-icons bx bx-envelope"></i>
<div data-i18n="Message">Message</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/cms/subscription*') ? 'active' : '' }}">
<a href="{{ route('cms.subscription.index') }}" class="menu-link">
<i class="menu-icon tf-icons bx bx-envelope"></i>
<div data-i18n="Subscription">Subscription</div>
</a>
</li>
<li class="menu-item {{ Request::is('apanel/setting*') ? 'active' : '' }}">
<a href="{{ route('setting.index') }}" class="menu-link">
<i class="menu-icon tf-icons bx bx-cog"></i>
<div data-i18n="Setting">Setting</div>
</a>
</li>
</ul>
</aside>

View File

@@ -0,0 +1,132 @@
@section('pageCss')
@endsection
<div class="row">
<div class="col-md-12">
<ul class="nav nav-pills flex-column flex-md-row mb-3">
<li class="nav-item">
<a class="nav-link active" href="javascript:void(0);">
<i class="bx bx-user me-1"></i> General
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="pages-account-settings-connections.html">
<i class="bx bx-link-alt me-1"></i> Connections
</a>
</li>
</ul>
<div class="card mb-4">
<h5 class="card-header">Site Details</h5>
<!-- Account -->
<div class="card-body">
<div class="d-flex align-items-start align-items-sm-center gap-4">
<img src="../../assets/img/avatars/1.png" alt="user-avatar" class="d-block rounded" height="100"
width="100" id="uploadedAvatar" />
<div class="button-wrapper">
<label for="upload" class="btn btn-primary me-2 mb-4" tabindex="0">
<span class="d-none d-sm-block">Upload</span>
<i class="bx bx-upload d-block d-sm-none"></i>
<input type="file" id="upload" class="account-file-input" hidden
accept="image/png, image/jpeg" />
</label>
<button type="button" class="btn btn-label-secondary account-image-reset mb-4">
<i class="bx bx-reset d-block d-sm-none"></i>
<span class="d-none d-sm-block">Reset</span>
</button>
<p class="mb-0">Allowed JPG, GIF or PNG. Max size of 800K</p>
</div>
</div>
</div>
<hr class="my-0" />
<div class="card-body">
<form id="formAccountSettings" method="POST" onsubmit="return false">
<div class="row">
<div class="mb-3 col-md-6">
<label class="form-label">Name<span class="text-danger"> *</span></label>
{!! Form::text('company_name', $value = null, [
'placeholder' => 'e.g. Jhigu Technologies',
'class' => 'form-control',
'required',
]) !!}
</div>
<div class="mb-3 col-md-6">
<label class="form-label">Address</label>
{!! Form::text('address', $value = null, [
'placeholder' => 'e.g. Bhaktapur, Bagmati, Nepal',
'class' => 'form-control'
]) !!}
</div>
<div class="mb-3 col-md-6">
<label class="form-label">Contact Number</label>
<div class="input-group input-group-merge">
<span class="input-group-text">NP (+977)</span>
{!! Form::text('contact_number', $value = null, [
'placeholder' => 'e.g. 9876543210',
'class' => 'form-control',
]) !!}
</div>
</div>
<div class="mb-3 col-md-6">
<label class="form-label">E-mail (Info)</label>
{!! Form::text('info_email_address', $value = null, [
'placeholder' => 'e.g. info@jhigutech.com',
'class' => 'form-control',
]) !!}
</div>
<div class="mb-3 col-md-6">
<label class="form-label">Mobile Number</label>
<div class="input-group input-group-merge">
<span class="input-group-text">NP (+977)</span>
{!! Form::text('mobile_number', $value = null, [
'placeholder' => 'e.g. 9876543210',
'class' => 'form-control',
]) !!}
</div>
</div>
<div class="mb-3 col-md-6">
<label class="form-label">Mobile Number (Alternative)</label>
<div class="input-group input-group-merge">
<span class="input-group-text">NP (+977)</span>
{!! Form::text('alt_mobile_number', $value = null, [
'placeholder' => 'e.g. 9876543210',
'class' => 'form-control',
]) !!}
</div>
</div>
<div class="mb-3 col-md-6">
<label class="form-label">E-mail (Support)</label>
{!! Form::text('support_email_address', $value = null, [
'placeholder' => 'e.g. support@jhigutech.com',
'class' => 'form-control',
]) !!}
</div>
<div class="mb-3 col-md-6">
<label class="form-label">Opening Hours</label>
{!! Form::text('opening_hours', $value = null, [
'placeholder' => 'e.g. 9:00 AM - 10:00 PM',
'class' => 'form-control',
]) !!}
</div>
<div class="mb-3 col-md-12">
<label class="form-label">Short Description</label>
{!! Form::textarea('short_detail', $value = null, [
'rows' => 5,
'placeholder' => 'Write short description',
'class' => 'form-control',
]) !!}
</div>
</div>
<div class="mt-2">
<button type="submit" class="btn btn-primary me-2">Save Changes</button>
<button type="reset" class="btn btn-label-secondary">Cancel</button>
</div>
</form>
</div>
<!-- /Account -->
</div>
</div>
</div>
@section('pageJs')
@endsection

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/vendor/libs/apex-charts/apexcharts.js') }}"></script>

View File

@@ -0,0 +1 @@
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/apex-charts/apex-charts.css') }}" />

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/js/dashboards-analytics.js') }}"></script>

View File

@@ -0,0 +1 @@
<script src="{{ asset('backend/theme/assets/vendor/libs/datatables-bs5/datatables-bootstrap5.js') }}"></script>

View File

@@ -0,0 +1,3 @@
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/libs/datatables-bs5/datatables.bootstrap5.css') }}" />
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/libs/datatables-responsive-bs5/responsive.bootstrap5.css') }}" />
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/libs/datatables-buttons-bs5/buttons.bootstrap5.css') }}" />

View File

@@ -0,0 +1,4 @@
<!-- Vendors JS -->
<script src="{{ asset('backend/theme/assets/vendor/libs/flatpickr/flatpickr.js') }}"></script>
<!-- Page JS -->
<script src="{{ asset('backend/theme/assets/js/forms-pickers.js') }}"></script>

View File

@@ -0,0 +1 @@
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/libs/flatpickr/flatpickr.css') }}" />

View File

@@ -0,0 +1,7 @@
<!-- Vendors JS -->
<script src="{{asset('backend/theme/assets/vendor/libs/quill/katex.js')}}"></script>
<script src="{{asset('backend/theme/assets/vendor/libs/quill/quill.js')}}"></script>
<!-- Page JS -->
<script src="{{asset('backend/theme/assets/js/forms-editors.js')}}"></script>

View File

@@ -0,0 +1,2 @@
<link rel="stylesheet" href="{{asset('backend/theme/assets/vendor/libs/quill/katex.css')}}" />
<link rel="stylesheet" href="{{asset('backend/theme/assets/vendor/libs/quill/editor.css')}}" />

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/vendor/libs/hammer/hammer.js') }}"></script>

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/vendor/libs/i18n/i18n.js') }}"></script>

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/js/pages-account-settings-account.js') }}"></script>

View File

@@ -0,0 +1,2 @@
<!-- Page JS -->
<script src="{{asset('backend/theme/assets/js/app-email.js')}}"></script>

View File

@@ -0,0 +1 @@
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/css/pages/app-email.css') }}" />

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/js/backend/mapDisplay.js') }}"></script>

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/vendor/js/menu.js') }}"></script>

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>

View File

@@ -0,0 +1 @@
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}" />

View File

@@ -0,0 +1 @@
<script src="{{asset('backend/theme/assets/vendor/libs/jquery-repeater/jquery-repeater.js')}}"></script>

View File

@@ -0,0 +1,3 @@
<script src="{{asset('backend/theme/assets/vendor/libs/select2/select2.js')}}"></script>
<script src="{{asset('backend/theme/assets/vendor/libs/bootstrap-select/bootstrap-select.js')}}"></script>
<script src="{{asset('backend/theme/assets/js/forms-selects.js')}}"></script>

View File

@@ -0,0 +1,2 @@
<link rel="stylesheet" href="{{asset('backend/theme/assets/vendor/libs/select2/select2.css')}}" />
<link rel="stylesheet" href="{{asset('backend/theme/assets/vendor/libs/bootstrap-select/bootstrap-select.css')}}" />

View File

@@ -0,0 +1,2 @@
<script src="{{asset('backend/theme/assets/vendor/libs/tagify/tagify.js')}}"></script>
<script src="{{asset('backend/theme/assets/js/forms-tagify.js')}}"></script>

View File

@@ -0,0 +1 @@
<link rel="stylesheet" href="{{ asset('backend/theme/assets/vendor/libs/tagify/tagify.css') }}" />

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/js/backend/textarea_content_display.js') }}"></script>

View File

@@ -0,0 +1,43 @@
<script src="https://cdn.tiny.cloud/1/ws0u7bw3zjim17nmv8i4wx3ffelqlp2htu18jibhox5z7ii9/tinymce/6/tinymce.min.js" referrerpolicy="origin"></script>
<script>
tinymce.init({
selector: 'textarea#basic',
height: 500,
plugins: ['code'],
toolbar: 'undo redo | blocks fontselect fontsizeselect | ' +
'bold italic backcolor | alignleft aligncenter ' +
'alignright alignjustify | bullist numlist outdent indent | code',
font_family_formats:
'Arial=arial,helvetica,sans-serif;' +
'Courier New=courier new,courier,monospace;' +
'Georgia=georgia,palatino;' +
'Tahoma=tahoma,arial,helvetica,sans-serif;' +
'Times New Roman=times new roman,times;' +
'Verdana=verdana,geneva;',
content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px }'
});
</script>
<script>
tinymce.init({
selector: 'textarea#advance',
height: 500,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview',
'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen',
'insertdatetime', 'media', 'table', 'help', 'wordcount'
],
toolbar: 'undo redo | blocks fontselect fontsizeselect | ' +
'bold italic backcolor | alignleft aligncenter ' +
'alignright alignjustify | bullist numlist outdent indent | code',
font_family_formats:
'Arial=arial,helvetica,sans-serif;' +
'Courier New=courier new,courier,monospace;' +
'Georgia=georgia,palatino;' +
'Tahoma=tahoma,arial,helvetica,sans-serif;' +
'Times New Roman=times new roman,times;' +
'Verdana=verdana,geneva;',
content_style: 'body { font-family:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-size:0.9375rem; color:#677788; }'
});
</script>

View File

@@ -0,0 +1 @@
<script src="{{ asset('assets/vendor/libs/typeahead-js/typeahead.js') }}"></script>

View File

@@ -0,0 +1 @@
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/typeahead-js/typeahead.css') }}" />

View File

@@ -0,0 +1,2 @@
<!-- Page JS -->
<script src="{{ asset('assets/js/form-validation.js') }}"></script>

View File

@@ -0,0 +1,2 @@
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/formvalidation/dist/css/formValidation.min.css') }}" />

View File

View File

@@ -0,0 +1,19 @@
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware(['auth:sanctum'])->prefix('v1')->name('api.')->group(function () {
Route::get('admin', fn (Request $request) => $request->user())->name('admin');
});

View File

@@ -0,0 +1,19 @@
<?php
use Illuminate\Support\Facades\Route;
use Modules\Admin\app\Http\Controllers\Auth\AuthController;
/*
|---------------------------------------------------- ----------------------
| Auth Routes
|--------------------------------------------------------------------------
*/
Route::prefix('apanel')->middleware([])->group(function () {
Route::get('/', [AuthController::class, 'login'])->name('login');
Route::post('/post-login', [AuthController::class, 'postLogin'])->name('login.post');
});
Route::prefix('apanel')->middleware(['auth', 'verified'])->group(function () {
Route::get('/logout', [AuthController::class, 'logout'])->name('logout');
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
});

View File

@@ -0,0 +1,27 @@
<?php
use Illuminate\Support\Facades\Route;
use Modules\Admin\app\Http\Controllers\AdminController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::prefix('apanel')
->middleware(['auth', 'verified'])
->group(function () {
Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard');
});
//-- Auth Routes
// require __DIR__.'/auth.php';
require base_path('Modules/Admin/routes/auth.php');

View File

View File

View File

@@ -0,0 +1,26 @@
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
build: {
outDir: '../../public/build-admin',
emptyOutDir: true,
manifest: true,
},
plugins: [
laravel({
publicDirectory: '../../public',
buildDirectory: 'build-admin',
input: [
__dirname + '/resources/assets/sass/app.scss',
__dirname + '/resources/assets/js/app.js'
],
refresh: true,
}),
],
});
//export const paths = [
// 'Modules/$STUDLY_NAME$/resources/assets/sass/app.scss',
// 'Modules/$STUDLY_NAME$/resources/assets/js/app.js',
//];