feat:layouts admin side

This commit is contained in:
2026-08-19 13:26:40 +03:30
parent f5845ade11
commit 15368f3c39
4 changed files with 441 additions and 0 deletions
+196
View File
@@ -0,0 +1,196 @@
<!DOCTYPE html>
<html
lang="fa"
data-nav-layout="vertical"
data-theme-mode="light"
data-header-styles="light"
data-menu-styles="light"
dir="rtl"
loader="enable"
data-vertical-style="default">
<head>
<!-- Meta Data -->
<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>
پنل مدیریت
@isset($title)
|
{{$title}}
@endisset
</title>
<meta name="csrf-token" content="G3faz5te2OVLWMw1sn2U47RRUgVWPGJznIyOIEMM">
<!-- Favicon -->
<link rel="icon" href="/assets/admin/images/brand-logos/favicon.ico" type="image/x-icon">
<!-- Start::Styles -->
<!-- Choices JS -->
<script src="{{asset('assets/admin/js/choices.min.js')}}"></script>
<!-- Main Theme Js -->
<script src="{{asset('assets/admin/js/main.js')}}"></script>
<link href="{{asset('assets/admin/css/bootstrap.rtl.min.css')}}" id="style" rel="stylesheet">
<!-- Style Css -->
<link href="{{asset('assets/admin/css/styles.css')}}" rel="stylesheet">
<!-- Icons Css -->
<link href="{{asset('assets/admin/css/icons.css')}}" rel="stylesheet">
<!-- Node Waves Css -->
<link href="{{asset('assets/admin/css/waves.min.css')}}" rel="stylesheet">
<!-- Simplebar Css -->
<link href="{{asset('assets/admin/css/simplebar.min.css')}}" rel="stylesheet">
<!-- Color Picker Css -->
<link rel="stylesheet" href="{{asset('assets/admin/css/nano.min.css')}}">
<!-- Choices Css -->
<link rel="stylesheet" href="{{asset('assets/admin/css/choices.min.css')}}">
<!-- FlatPickr CSS -->
<link rel="stylesheet" href="{{asset('assets/admin/css/flatpickr.min.css')}}">
<!-- Auto Complete CSS -->
<link rel="stylesheet" href="{{asset('assets/admin/css/autoComplete.css')}}">
<!-- Prism CSS -->
<link rel="stylesheet" href="{{asset('assets/admin/plugins/prismjs/themes/prism-coy.min.css')}}">
<link rel="stylesheet" href="{{asset('assets/admin/plugins/dropzone/dropzone.css')}}">
<!-- Persian Datepicker -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/persian-datepicker@1.2.0/dist/css/persian-datepicker.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/choices.js/public/assets/styles/choices.min.css"/>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body @class(['authentication-background' => isset($rawLayout)])>
<!-- Loader -->
<div id="loader" class="d-none">
<img src="{{asset('assets/admin/images/media/loader.svg')}}" alt="">
</div>
<!-- Loader -->
<!-- page -->
<div class="page">
@includeUnless(isset($rawLayout),'admin.layouts.header')
@includeUnless(isset($rawLayout),'admin.layouts.sidebar')
<!-- Start::app-content -->
<div @class([
'main-content',
'app-content ' => !isset($rawLayout),
])
>
@yield('content')
</div>
<!-- End::app-content -->
@includeUnless(isset($rawLayout),'admin.layouts.footer')
</div>
<!-- End Page -->
<!-- Scroll To Top -->
<div class="scrollToTop" style="display: none;">
<span class="arrow lh-1"><i class="ri-rocket-line align-middle fs-18"></i></span>
</div>
<div id="responsive-overlay"></div>
<!-- Scroll To Top -->
<!-- Persian Date Library -->
<script src="https://cdn.jsdelivr.net/npm/persian-date/dist/persian-date.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/persian-datepicker@1.2.0/dist/js/persian-datepicker.min.js"></script>
<!-- Popper JS -->
<script src="{{asset('assets/admin/js/popper.min.js')}}"></script>
<!-- Bootstrap JS -->
<script src="{{asset('assets/admin/js/bootstrap.bundle.min.js')}}"></script>
<!-- Defaultmenu JS -->
<script src="{{asset('assets/admin/js/defaultmenu.js')}}"></script>
<!-- Node Waves JS -->
<script src="{{asset('assets/admin/js/waves.min.js')}}"></script>
<!-- Sticky JS -->
<script src="{{asset('assets/admin/js/sticky.js')}}"></script>
<!-- Color Picker JS -->
<script src="{{asset('assets/admin/js/pickr.es5.min.js')}}"></script>
<!-- Date & Time Picker JS -->
<script src="{{asset('assets/admin/js/flatpickr.min.js')}}"></script>
<!-- Custom-Switcher JS -->
<script src="{{asset('assets/admin/js/custom-switcher.js')}}"></script>
<!-- Custom JS -->
<script src="{{asset('assets/admin/js/custom.js')}}"></script>
<script>
document.addEventListener("DOMContentLoaded", function () {
// ===== Choices =====
const choicesEl = document.querySelector('#choices-single-default');
if (choicesEl && window.Choices) {
const choices = new Choices(choicesEl, {
allowHTML: true,
searchEnabled: false,
shouldSort: false,
itemSelectText: '',
placeholder: true,
placeholderValue: 'مرتب‌سازی بر اساس'
});
if (choicesEl) {
choicesEl.addEventListener('change', function () {
if (this.form) this.form.submit();
});
}
}
// ===== ApexCharts =====
const charts = document.querySelectorAll(".apex-chart");
charts.forEach(chartEl => {
if (chartEl) {
const options = chartEl.dataset.options ? JSON.parse(chartEl.dataset.options) : {};
const chart = new ApexCharts(chartEl, options);
chart.render();
}
});
// ===== Popper Example =====
const popperRefs = document.querySelectorAll("[data-popper-ref]");
popperRefs.forEach(ref => {
const targetId = ref.getAttribute("data-popper-target");
const popperEl = document.getElementById(targetId);
if (popperEl) {
Popper.createPopper(ref, popperEl, {
placement: 'bottom'
});
}
});
});
</script>
@stack('js')
</body>
</html>
@@ -0,0 +1,11 @@
<!-- Start::main-footer -->
<footer class="footer mt-auto py-3 bg-white text-center">
<div class="container">
<span class="text-muted">
<span id="year"></span>
|
<span>تمامی حقوق محفوظ است.</span>
</span>
</div>
</footer>
<!-- End::main-footer -->
@@ -0,0 +1,140 @@
<!-- Start::main-header -->
<header class="app-header sticky" id="header">
<!-- Start::main-header-container -->
<div class="main-header-container container-fluid">
<!-- Start::header-content-left -->
<div class="header-content-left">
<!-- Start::header-element -->
<div class="header-element mx-lg-0 me-2 d-lg-none">
<a aria-label="Hide Sidebar" class="sidemenu-toggle header-link" data-bs-toggle="sidebar"
href="javascript:void(0);">
<svg xmlns="http://www.w3.org/2000/svg" class="header-link-icon menu-btn" width="24" height="24"
viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
stroke-width="1.5" d="M4 5h12M4 12h16M4 19h8" color="currentColor"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" class="header-link-icon menu-btn-close" width="24"
height="24" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
stroke-width="1.5" d="m18 6l-6 6m0 0l-6 6m6-6l6 6m-6-6L6 6"
color="currentColor">
</path>
</svg>
</a>
</div>
<!-- End::header-element -->
<!-- Start::header-element -->
<div class="header-element">
<div class="horizontal-logo">
<a href="{{route('admin.dashboard.index')}}" class="header-logo">
<span class="text-primary fs-6 fw-bold">پنل مدیریت</span>
</a>
</div>
</div>
<!-- End::header-element -->
<!-- Start::header-element -->
<div class="header-element header-search d-md-block d-none my-auto">
@yield('breadcrumb')
</div>
<!-- End::header-element -->
</div>
<!-- End::header-content-left -->
<!-- Start::header-content-right -->
<ul class="header-content-right">
<!-- Start::header-element -->
<li class="header-element header-theme-mode">
<!-- Start::header-link|layout-setting -->
<a href="javascript:void(0);" class="header-link layout-setting">
<span class="light-layout">
<!-- Start::header-link-icon -->
<svg xmlns="http://www.w3.org/2000/svg" class="header-link-icon" width="1em"
height="1em" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.5"
d="M21.5 14.078A8.557 8.557 0 0 1 9.922 2.5C5.668 3.497 2.5 7.315 2.5 11.873a9.627 9.627 0 0 0 9.627 9.627c4.558 0 8.376-3.168 9.373-7.422"
color="currentColor"></path>
</svg>
<!-- End::header-link-icon -->
</span>
<span class="dark-layout">
<!-- Start::header-link-icon -->
<svg xmlns="http://www.w3.org/2000/svg" class="header-link-icon" width="1em"
height="1em" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.5"
d="M17 12a5 5 0 1 1-10 0a5 5 0 0 1 10 0M12 2v1.5m0 17V22m7.07-2.929l-1.06-1.06M5.99 5.989L4.928 4.93M22 12h-1.5m-17 0H2m17.071-7.071l-1.06 1.06M5.99 18.011l-1.06 1.06"
color="currentColor"></path>
</svg>
<!-- End::header-link-icon -->
</span>
</a>
<!-- End::header-link|layout-setting -->
</li>
<!-- End::header-element -->
<!-- Start::header-element -->
<li class="header-element dropdown">
<!-- Start::header-link|dropdown-toggle -->
<a href="javascript:void(0);" class="header-link dropdown-toggle" id="mainHeaderProfile"
data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
<div class="d-flex align-items-center">
<div>
<img
src="{{asset('assets/admin/images/faces/DefaultAvatar.jpg')}}"
alt="img"
class="avatar avatar-sm avatar-rounded">
</div>
</div>
</a>
<!-- End::header-link|dropdown-toggle -->
<ul class="main-header-dropdown dropdown-menu pt-0 overflow-hidden header-profile-dropdown dropdown-menu-end"
aria-labelledby="mainHeaderProfile">
<li class="p-3 border-bottom">
<div class="d-flex align-items-center">
<div>
<p class="mb-0 fw-semibold lh-1">{{auth('admin')->user()->full_name}}</p>
<span class="fs-11 text-muted">{{auth('admin')->user()->username}}</span>
</div>
</div>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<a class="dropdown-item d-flex align-items-center text-danger px-3"
href="{{route('admin.auth.logout')}}">
<i
class="ri-logout-circle-line fs-15 me-2 text-danger fw-normal"
style="position: relative; top: -2px"
></i>
خروج
</a>
</li>
</ul>
</li>
<!-- End::header-element -->
</ul>
<!-- End::header-content-right -->
</div>
<!-- End::main-header-container -->
</header>
<!-- End::main-header -->
@@ -0,0 +1,94 @@
<!-- Start::main-sidebar -->
<aside class="app-sidebar sticky" id="sidebar">
<!-- Start::main-sidebar-header -->
<div class="main-sidebar-header">
<a href="{{route('admin.dashboard.index')}}" class="header-logo">
<span class="text-primary fs-6 fw-bold">پنل مدیریت</span>
</a>
</div>
<div class="main-sidebar simplebar-scrollable-y" id="sidebar-scroll" data-simplebar="init">
<div class="simplebar-wrapper" style="margin: -8px 0 -80px;">
<div class="simplebar-height-auto-observer-wrapper">
<div class="simplebar-height-auto-observer"></div>
</div>
<div class="simplebar-mask">
<div class="simplebar-offset" style="left: 0; bottom: 0;">
<div class="simplebar-content-wrapper" tabindex="0" role="region"
aria-label="scrollable content" style="height: 100%; overflow: hidden scroll;">
<div class="simplebar-content" style="padding: 8px 0 80px;">
<!-- Start::nav -->
<nav class="main-menu-container nav nav-pills flex-column sub-open active open">
<div class="slide-left active open d-none" id="slide-left">
<svg xmlns="http://www.w3.org/2000/svg" fill="#7b8191" width="24" height="24"
viewBox="0 0 24 24">
<path
d="M13.293 6.293 7.586 12l5.707 5.707 1.414-1.414L10.414 12l4.293-4.293z"></path>
</svg>
</div>
<ul class="main-menu mx-0">
<!-- Start::slide -->
<li class="slide ">
<a href="{{route('admin.dashboard.index')}}"
class="side-menu__item {{activeAccountSidebar('admin.dashboard.index')}} ">
<svg xmlns="http://www.w3.org/2000/svg" class="side-menu__icon" width="1em"
height="1em" viewBox="0 0 24 24">
<g fill="none" stroke="currentColor" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1.5" color="currentColor">
<path d="m9 22l-.251-3.509a3.259 3.259 0 1 1 6.501 0L15 22"></path>
<path
d="M2.352 13.214c-.354-2.298-.53-3.446-.096-4.465s1.398-1.715 3.325-3.108L7.021 4.6C9.418 2.867 10.617 2 12.001 2c1.382 0 2.58.867 4.978 2.6l1.44 1.041c1.927 1.393 2.89 2.09 3.325 3.108c.434 1.019.258 2.167-.095 4.464l-.301 1.96c-.5 3.256-.751 4.884-1.919 5.856S16.554 22 13.14 22h-2.28c-3.415 0-5.122 0-6.29-.971c-1.168-.972-1.418-2.6-1.918-5.857z"></path>
</g>
</svg>
<span class="side-menu__label">داشبورد</span>
</a>
</li>
<!-- End::slide -->
<!-- Start::slide -->
<li class="slide ">
<a href="{{route('admin.admins.index')}}"
class="side-menu__item {{ activeAccountSidebar('admin.admins.index') }}>
<svg xmlns="http://www.w3.org/2000/svg" class="side-menu__icon" width="1em"
height="1em" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1.5"
d="M13 2h-2C7.229 2 5.343 2 4.172 3.172S3 6.229 3 10v4c0 3.771 0 5.657 1.172 6.828S7.229 22 11 22h2c3.771 0 5.657 0 6.828-1.172S21 17.771 21 14v-4c0-3.771 0-5.657-1.172-6.828S16.771 2 13 2m8 10H3m12-5H9m6 10H9"
color="currentColor"></path>
</svg>
<span class="side-menu__label">مدیریت کاربران</span>
</a>
</li>
<!-- End::slide -->
</ul>
<div class="slide-right d-none" id="slide-right">
<svg xmlns="http://www.w3.org/2000/svg" fill="#7b8191" width="24" height="24"
viewBox="0 0 24 24">
<path
d="M10.707 17.707 16.414 12l-5.707-5.707-1.414 1.414L13.586 12l-4.293 4.293z"></path>
</svg>
</div>
</nav>
<!-- End::nav -->
</div>
</div>
</div>
</div>
<div class="simplebar-placeholder" style="width: 239px; height: 1578px;"></div>
</div>
<div class="simplebar-track simplebar-horizontal" style="visibility: hidden;">
<div class="simplebar-scrollbar" style="width: 0; display: none;"></div>
</div>
<div class="simplebar-track simplebar-vertical" style="visibility: visible;">
<div class="simplebar-scrollbar"
style="height: 568px; transform: translate3d(0px, 0px, 0px); display: block;"></div>
</div>
</div>
</aside>
<!-- End::main-sidebar -->