Initial commit
This commit is contained in:
74
resources/views/layouts/app.blade.php
Normal file
74
resources/views/layouts/app.blade.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>Project Status Reporting</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.bunny.net">
|
||||
<link href="https://fonts.bunny.net/css?family=Nunito" rel="stylesheet">
|
||||
|
||||
<!-- Scripts -->
|
||||
<link rel="stylesheet" href="{{ url('public/assets/libs/bootstrap/css/bootstrap5.3.2.css') }}">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
|
||||
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="#">CML</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" aria-current="page" href="/">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/projects">Projects</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/project-status">Project Statuses</a>
|
||||
</li>
|
||||
<!-- <li class="nav-item">
|
||||
<a class="nav-link" href="#">Contact</a>
|
||||
</li> -->
|
||||
</ul>
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-secondary dropdown-toggle" type="button" id="userDropdown" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
User Profile
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
|
||||
<li><a class="dropdown-item" href="#">My Profile</a></li>
|
||||
<li><a class="dropdown-item" href="#">Settings</a></li>
|
||||
<li>
|
||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||
onclick="event.preventDefault();
|
||||
document.getElementById('logout-form').submit();">
|
||||
{{ __('Logout') }}
|
||||
</a>
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||
@csrf
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main class="py-4">
|
||||
@yield('content')
|
||||
</main>
|
||||
</div>
|
||||
<script src="{{ url('public/assets/libs/bootstrap/js/bootstrap5.3.2.js') }}" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
103
resources/views/layouts/master.blade.php
Normal file
103
resources/views/layouts/master.blade.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>@yield('title', config('app.name'))</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">
|
||||
<style>
|
||||
body { background-color: #f8f9fc; }
|
||||
|
||||
/* Sidebar Styling */
|
||||
#sidebar {
|
||||
width: 260px;
|
||||
background-color: #111425;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100vh;
|
||||
overflow-y: auto;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.sidebar-brand { color: #fff; padding: 1.5rem 1.25rem; font-weight: 700; }
|
||||
.sidebar-brand-icon { background: #5c4df0; padding: 0.5rem; border-radius: 8px; margin-right: 10px; }
|
||||
.sidebar-nav-item { color: #8a90a5; text-decoration: none; padding: 0.75rem 1.25rem; display: block; border-radius: 8px; margin: 0.2rem 1rem; font-size: 0.9rem; }
|
||||
.sidebar-nav-item:hover, .sidebar-nav-item.active { background-color: #5c4df0; color: #fff; }
|
||||
.sidebar-heading { color: #5a617a; font-size: 0.75rem; text-transform: uppercase; padding: 1rem 1.25rem 0.5rem; font-weight: 600; letter-spacing: 0.5px; }
|
||||
|
||||
/* Main Content Layout */
|
||||
#main-content { margin-left: 260px; min-height: 100vh; }
|
||||
|
||||
/* Topbar Styling */
|
||||
.topbar { background: #fff; height: 70px; border-bottom: 1px solid #eaedf1; padding: 0 1.5rem; }
|
||||
.badge-notification { position: absolute; top: -5px; right: -5px; background: #e74a3b; border-radius: 50%; padding: 3px 6px; font-size: 10px; color: white;}
|
||||
|
||||
/* Dashboard Cards */
|
||||
.hero-banner { background-color: #181b31; color: white; border-radius: 12px; }
|
||||
.stat-card { border: 1px solid #eaedf1; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.02); }
|
||||
.stat-icon { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 8px; font-size: 1.2rem; }
|
||||
|
||||
.progress-slim { height: 6px; border-radius: 4px; }
|
||||
</style>
|
||||
@stack('styles')
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@include('layouts.partials.sidebar')
|
||||
<main id="main-content">
|
||||
@include('layouts.partials.topbar')
|
||||
<div class="container-fluid p-4">
|
||||
|
||||
@yield('content')
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<!-- jQuery -->
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Function to update the clock dynamically
|
||||
function updateClock() {
|
||||
const now = new Date();
|
||||
|
||||
// Format Date: Thu, Jun 18, 2026
|
||||
const dateOptions = { weekday: 'short', month: 'short', day: 'numeric', year: 'numeric' };
|
||||
const formattedDate = now.toLocaleDateString('en-US', dateOptions);
|
||||
|
||||
// Format Time: 01:37:34 PM
|
||||
const timeOptions = { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: true };
|
||||
const formattedTime = now.toLocaleTimeString('en-US', timeOptions);
|
||||
|
||||
$('#current-date').text(formattedDate);
|
||||
$('#current-time').text(formattedTime);
|
||||
}
|
||||
|
||||
// Run clock update immediately and then every second
|
||||
updateClock();
|
||||
setInterval(updateClock, 1000);
|
||||
|
||||
// Basic button interaction demo using jQuery
|
||||
$('#seedBtn').on('click', function() {
|
||||
const $btn = $(this);
|
||||
const originalText = $btn.html();
|
||||
$btn.html('<span class="spinner-border spinner-border-sm me-2" role="status" aria-hidden="true"></span> Seeding...');
|
||||
$btn.prop('disabled', true);
|
||||
|
||||
// Simulate an API call
|
||||
setTimeout(() => {
|
||||
$btn.html(originalText);
|
||||
$btn.prop('disabled', false);
|
||||
alert('Demo records seeded successfully!');
|
||||
}, 1500);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@stack('scripts')
|
||||
|
||||
</body>
|
||||
</html>
|
||||
75
resources/views/layouts/masterbeta.blade.php
Normal file
75
resources/views/layouts/masterbeta.blade.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>@yield('title', 'CML ERP')</title>
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">
|
||||
|
||||
<style>
|
||||
body { background-color: #f8f9fc; }
|
||||
|
||||
/* Sidebar Styling */
|
||||
#sidebar { width: 260px; background-color: #111425; position: fixed; height: 100vh; overflow-y: auto; z-index: 1000; }
|
||||
.sidebar-brand { color: #fff; padding: 1.5rem 1.25rem; font-weight: 700; }
|
||||
.sidebar-brand-icon { background: #5c4df0; padding: 0.5rem; border-radius: 8px; margin-right: 10px; }
|
||||
.sidebar-nav-item { color: #8a90a5; text-decoration: none; padding: 0.75rem 1.25rem; display: block; border-radius: 8px; margin: 0.2rem 1rem; font-size: 0.9rem; transition: all 0.2s; }
|
||||
.sidebar-nav-item:hover, .sidebar-nav-item.active { background-color: #5c4df0; color: #fff; }
|
||||
.sidebar-heading { color: #5a617a; font-size: 0.75rem; text-transform: uppercase; padding: 1rem 1.25rem 0.5rem; font-weight: 600; }
|
||||
|
||||
/* Main Content & Topbar */
|
||||
#main-content { margin-left: 260px; min-height: 100vh; display: flex; flex-direction: column; }
|
||||
.topbar { background: #fff; height: 70px; border-bottom: 1px solid #eaedf1; padding: 0 1.5rem; flex-shrink: 0; }
|
||||
|
||||
/* Reusable Components */
|
||||
.content-card { background: #fff; border: 1px solid #eaedf1; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.02); }
|
||||
.table-custom th { background-color: #f8f9fc; color: #5a617a; font-weight: 600; font-size: 0.8rem; text-transform: uppercase; border-bottom: 2px solid #eaedf1; padding: 1rem; }
|
||||
.table-custom td { padding: 1rem; vertical-align: middle; font-size: 0.9rem; border-bottom: 1px solid #eaedf1; }
|
||||
.form-control:focus, .form-select:focus { border-color: #5c4df0; box-shadow: 0 0 0 0.25rem rgba(92, 77, 240, 0.25); }
|
||||
</style>
|
||||
|
||||
@stack('styles')
|
||||
<script>
|
||||
var base_url = "{!! url('/') !!}";
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@include('layouts.partials.sidebar')
|
||||
|
||||
<main id="main-content">
|
||||
|
||||
@include('layouts.partials.topbar')
|
||||
|
||||
<div class="container-fluid p-4 flex-grow-1">
|
||||
@yield('content')
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@stack('modals')
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$.ajaxSetup({
|
||||
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
|
||||
});
|
||||
|
||||
function updateClock() {
|
||||
const now = new Date();
|
||||
$('#current-time').text(now.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: true }));
|
||||
}
|
||||
updateClock();
|
||||
setInterval(updateClock, 1000);
|
||||
});
|
||||
</script>
|
||||
|
||||
@stack('scripts')
|
||||
</body>
|
||||
</html>
|
||||
309
resources/views/layouts/new_master.blade.php
Normal file
309
resources/views/layouts/new_master.blade.php
Normal file
@@ -0,0 +1,309 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Nexus ERP Dashboard</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">
|
||||
<style>
|
||||
body { background-color: #f8f9fc; }
|
||||
|
||||
/* Sidebar Styling */
|
||||
#sidebar {
|
||||
width: 260px;
|
||||
background-color: #111425;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100vh;
|
||||
overflow-y: auto;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.sidebar-brand { color: #fff; padding: 1.5rem 1.25rem; font-weight: 700; }
|
||||
.sidebar-brand-icon { background: #5c4df0; padding: 0.5rem; border-radius: 8px; margin-right: 10px; }
|
||||
.sidebar-nav-item { color: #8a90a5; text-decoration: none; padding: 0.75rem 1.25rem; display: block; border-radius: 8px; margin: 0.2rem 1rem; font-size: 0.9rem; }
|
||||
.sidebar-nav-item:hover, .sidebar-nav-item.active { background-color: #5c4df0; color: #fff; }
|
||||
.sidebar-heading { color: #5a617a; font-size: 0.75rem; text-transform: uppercase; padding: 1rem 1.25rem 0.5rem; font-weight: 600; letter-spacing: 0.5px; }
|
||||
|
||||
/* Main Content Layout */
|
||||
#main-content { margin-left: 260px; min-height: 100vh; }
|
||||
|
||||
/* Topbar Styling */
|
||||
.topbar { background: #fff; height: 70px; border-bottom: 1px solid #eaedf1; padding: 0 1.5rem; }
|
||||
.badge-notification { position: absolute; top: -5px; right: -5px; background: #e74a3b; border-radius: 50%; padding: 3px 6px; font-size: 10px; color: white;}
|
||||
|
||||
/* Dashboard Cards */
|
||||
.hero-banner { background-color: #181b31; color: white; border-radius: 12px; }
|
||||
.stat-card { border: 1px solid #eaedf1; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.02); }
|
||||
.stat-icon { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 8px; font-size: 1.2rem; }
|
||||
|
||||
.progress-slim { height: 6px; border-radius: 4px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<aside id="sidebar">
|
||||
<div class="sidebar-brand d-flex align-items-center">
|
||||
<span class="sidebar-brand-icon"><i class="bi bi-buildings"></i></span>
|
||||
<div>
|
||||
<div class="mb-0 fs-6">NEXUS <span class="badge bg-secondary ms-1" style="font-size: 0.6rem;">ERP</span></div>
|
||||
<div class="text-secondary" style="font-size: 0.65rem; letter-spacing: 1px;">v1.2.0 • PROTOTYPE</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="px-3 mb-3">
|
||||
<div class="input-group input-group-sm">
|
||||
<span class="input-group-text bg-dark border-secondary text-secondary"><i class="bi bi-search"></i></span>
|
||||
<input type="text" class="form-control bg-dark border-secondary text-light placeholder-secondary" placeholder="Quick search menus...">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-heading">Overview</div>
|
||||
<a href="#" class="sidebar-nav-item active"><i class="bi bi-grid-1x2 me-2"></i> Dashboard</a>
|
||||
|
||||
<div class="sidebar-heading mt-2">Sales & Operations</div>
|
||||
<a href="#" class="sidebar-nav-item d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-people me-2"></i> Customers</span>
|
||||
<span class="badge rounded-pill bg-success text-dark" style="background-color: #c3e6cb !important;">4</span>
|
||||
</a>
|
||||
<a href="#" class="sidebar-nav-item d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-receipt me-2"></i> Invoices</span>
|
||||
<span class="badge rounded-pill bg-warning text-dark" style="background-color: #ffeeba !important;">3</span>
|
||||
</a>
|
||||
|
||||
<div class="sidebar-heading mt-2">Core Templates</div>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-file-earmark-text me-2"></i> General Record Form</a>
|
||||
|
||||
<div class="sidebar-heading mt-2">Intelligence</div>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-graph-up-arrow me-2"></i> Reports & Analytics</a>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-gear me-2"></i> System Settings</a>
|
||||
|
||||
<div class="position-absolute bottom-0 w-100 p-3">
|
||||
<div class="d-flex align-items-center bg-dark rounded p-2 text-light" style="background-color: #0d1020 !important;">
|
||||
<div class="rounded-circle bg-primary d-flex justify-content-center align-items-center me-2" style="width: 32px; height: 32px; font-size: 0.8rem;">AD</div>
|
||||
<div>
|
||||
<div class="fs-6 fw-bold" style="font-size: 0.85rem !important;">Admin User</div>
|
||||
<div class="text-secondary" style="font-size: 0.7rem;">admin@nexuserp.io</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<main id="main-content">
|
||||
<header class="topbar d-flex justify-content-between align-items-center">
|
||||
<div class="d-flex align-items-center">
|
||||
<i class="bi bi-house text-secondary me-2"></i>
|
||||
<i class="bi bi-chevron-right text-secondary me-2" style="font-size: 0.8rem;"></i>
|
||||
<span class="fw-bold">Dashboard</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="text-secondary me-4" style="font-size: 0.9rem;">
|
||||
<i class="bi bi-calendar4 me-1"></i> <span id="current-date">Thu, Jun 18, 2026</span>
|
||||
<span class="mx-2">|</span>
|
||||
<i class="bi bi-clock me-1"></i> <span id="current-time">01:37:34 PM</span>
|
||||
</div>
|
||||
<div class="position-relative me-4">
|
||||
<i class="bi bi-bell fs-5 text-secondary"></i>
|
||||
<span class="badge-notification">2</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="rounded-circle bg-light d-flex justify-content-center align-items-center me-2 border text-dark fw-bold" style="width: 32px; height: 32px; font-size: 0.8rem;">AU</div>
|
||||
<span class="fw-bold" style="font-size: 0.9rem;">Admin User</span>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="container-fluid p-4">
|
||||
|
||||
<div class="hero-banner p-4 mb-4 d-flex justify-content-between align-items-center">
|
||||
<div class="w-50">
|
||||
<h3 class="fw-bold mb-3">Base ERP Workstation <span class="badge bg-primary fs-6 align-middle ms-2" style="background-color: #5c4df0 !important;">ACTIVE</span></h3>
|
||||
<p class="text-secondary mb-0" style="font-size: 0.95rem; line-height: 1.6;">
|
||||
Welcome to Nexus-ERP base mockup. This screen loads aggregated statistics computed React state modifications (Customer Directory alterations, invoices creations, etc.) instantly.
|
||||
</p>
|
||||
</div>
|
||||
<div class="d-flex gap-3">
|
||||
<button class="btn text-white fw-bold d-flex align-items-center px-4" style="background-color: #5c4df0; border-radius: 8px;" id="seedBtn">
|
||||
<i class="bi bi-stars me-2"></i> Seed Demo Records
|
||||
</button>
|
||||
<button class="btn btn-outline-secondary text-white fw-bold d-flex align-items-center px-4" style="border-radius: 8px; border-color: #5a617a;">
|
||||
<i class="bi bi-plus-square me-2"></i> New Record Form
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-4 mb-4">
|
||||
<div class="col-xl-3 col-md-6">
|
||||
<div class="card stat-card h-100 p-3 border-0">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="text-secondary fw-bold" style="font-size: 0.75rem; letter-spacing: 0.5px;">ENTERPRISE REVENUE</div>
|
||||
<div class="stat-icon bg-success bg-opacity-10 text-success"><i class="bi bi-currency-dollar"></i></div>
|
||||
</div>
|
||||
<h2 class="fw-bold mt-2 mb-3">$1,438,950</h2>
|
||||
<div class="d-flex align-items-center mt-auto" style="font-size: 0.8rem;">
|
||||
<span class="text-success fw-bold"><i class="bi bi-arrow-up-right me-1"></i>+12.4%</span>
|
||||
<span class="text-secondary ms-2">quarter over quarter</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-md-6">
|
||||
<div class="card stat-card h-100 p-3 border-0">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="text-secondary fw-bold" style="font-size: 0.75rem; letter-spacing: 0.5px;">ACTIVE CUSTOMERS</div>
|
||||
<div class="stat-icon bg-primary bg-opacity-10 text-primary" style="color: #5c4df0 !important;"><i class="bi bi-people"></i></div>
|
||||
</div>
|
||||
<h2 class="fw-bold mt-2 mb-3">2</h2>
|
||||
<div class="d-flex align-items-center justify-content-between mt-auto" style="font-size: 0.8rem;">
|
||||
<span class="text-primary fw-bold" style="color: #5c4df0 !important;">4 total entries</span>
|
||||
<span class="text-secondary">98% engagement index</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-md-6">
|
||||
<div class="card stat-card h-100 p-3 border-0">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="text-secondary fw-bold" style="font-size: 0.75rem; letter-spacing: 0.5px;">PENDING RECEIVABLES</div>
|
||||
<div class="stat-icon bg-warning bg-opacity-10 text-warning"><i class="bi bi-clock"></i></div>
|
||||
</div>
|
||||
<h2 class="fw-bold mt-2 mb-3">$7,800</h2>
|
||||
<div class="d-flex align-items-center mt-auto" style="font-size: 0.8rem;">
|
||||
<span class="text-warning fw-bold">1 current bills</span>
|
||||
<span class="text-secondary ms-3 lh-sm" style="font-size: 0.7rem;">Immediate settlement<br>needed</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-md-6">
|
||||
<div class="card stat-card h-100 p-3 border-0">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="text-secondary fw-bold" style="font-size: 0.75rem; letter-spacing: 0.5px;">SLA DELIVERY INDEX</div>
|
||||
<div class="stat-icon bg-danger bg-opacity-10 text-danger"><i class="bi bi-percent"></i></div>
|
||||
</div>
|
||||
<h2 class="fw-bold mt-2 mb-3">84.5%</h2>
|
||||
<div class="d-flex align-items-center mt-auto" style="font-size: 0.8rem;">
|
||||
<span class="text-success fw-bold"><i class="bi bi-circle-fill me-1" style="font-size: 0.5rem;"></i>Healthy</span>
|
||||
<span class="text-secondary ms-3">Average response: 3.5 hrs</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-8">
|
||||
<div class="card stat-card border-0 p-4 h-100">
|
||||
<div class="d-flex justify-content-between align-items-start mb-4">
|
||||
<div>
|
||||
<h6 class="fw-bold mb-1">Revenue Projections Trend</h6>
|
||||
<p class="text-secondary mb-0" style="font-size: 0.85rem;">Demonstrating visual charts using pure responsive vector layouts</p>
|
||||
</div>
|
||||
<div class="d-flex gap-3" style="font-size: 0.85rem;">
|
||||
<span class="d-flex align-items-center"><i class="bi bi-circle-fill text-primary me-2" style="font-size: 0.5rem;"></i> Sales Target</span>
|
||||
<span class="d-flex align-items-center text-secondary"><i class="bi bi-circle-fill me-2" style="font-size: 0.5rem; color: #d1d5db;"></i> Prior Year</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-100 mt-auto position-relative" style="height: 200px;">
|
||||
<svg viewBox="0 0 800 200" class="w-100 h-100" preserveAspectRatio="none">
|
||||
<path d="M0,180 Q200,220 400,100 T800,20" fill="none" stroke="#e0e0e0" stroke-width="2" stroke-dasharray="5,5"/>
|
||||
<path d="M0,200 Q200,220 400,160 T800,0" fill="none" stroke="#5c4df0" stroke-width="4"/>
|
||||
<circle cx="400" cy="160" r="6" fill="#5c4df0" stroke="white" stroke-width="2"/>
|
||||
<circle cx="600" cy="50" r="6" fill="#5c4df0" stroke="white" stroke-width="2"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
<div class="card stat-card border-0 p-4 h-100">
|
||||
<h6 class="fw-bold mb-1">Department Distribution</h6>
|
||||
<p class="text-secondary mb-4" style="font-size: 0.85rem;">Ratio of active records grouped by segment</p>
|
||||
|
||||
<div class="mb-3">
|
||||
<div class="d-flex justify-content-between align-items-center mb-1" style="font-size: 0.85rem;">
|
||||
<span class="fw-bold"><i class="bi bi-circle-fill me-2" style="font-size: 0.5rem; color: #5c4df0;"></i> Finance</span>
|
||||
<span class="text-secondary">1 (25%)</span>
|
||||
</div>
|
||||
<div class="progress progress-slim">
|
||||
<div class="progress-bar" role="progressbar" style="width: 25%; background-color: #5c4df0;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<div class="d-flex justify-content-between align-items-center mb-1" style="font-size: 0.85rem;">
|
||||
<span class="fw-bold"><i class="bi bi-circle-fill me-2" style="font-size: 0.5rem; color: #10b981;"></i> Operations</span>
|
||||
<span class="text-secondary">1 (25%)</span>
|
||||
</div>
|
||||
<div class="progress progress-slim">
|
||||
<div class="progress-bar" role="progressbar" style="width: 25%; background-color: #10b981;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<div class="d-flex justify-content-between align-items-center mb-1" style="font-size: 0.85rem;">
|
||||
<span class="fw-bold"><i class="bi bi-circle-fill me-2" style="font-size: 0.5rem; color: #f59e0b;"></i> Sales</span>
|
||||
<span class="text-secondary">1 (25%)</span>
|
||||
</div>
|
||||
<div class="progress progress-slim">
|
||||
<div class="progress-bar" role="progressbar" style="width: 25%; background-color: #f59e0b;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<div class="d-flex justify-content-between align-items-center mb-1" style="font-size: 0.85rem;">
|
||||
<span class="fw-bold"><i class="bi bi-circle-fill me-2" style="font-size: 0.5rem; color: #ef4444;"></i> Marketing</span>
|
||||
<span class="text-secondary">0 (0%)</span>
|
||||
</div>
|
||||
<div class="progress progress-slim">
|
||||
<div class="progress-bar" role="progressbar" style="width: 0%; background-color: #ef4444;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Function to update the clock dynamically
|
||||
function updateClock() {
|
||||
const now = new Date();
|
||||
|
||||
// Format Date: Thu, Jun 18, 2026
|
||||
const dateOptions = { weekday: 'short', month: 'short', day: 'numeric', year: 'numeric' };
|
||||
const formattedDate = now.toLocaleDateString('en-US', dateOptions);
|
||||
|
||||
// Format Time: 01:37:34 PM
|
||||
const timeOptions = { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: true };
|
||||
const formattedTime = now.toLocaleTimeString('en-US', timeOptions);
|
||||
|
||||
$('#current-date').text(formattedDate);
|
||||
$('#current-time').text(formattedTime);
|
||||
}
|
||||
|
||||
// Run clock update immediately and then every second
|
||||
updateClock();
|
||||
setInterval(updateClock, 1000);
|
||||
|
||||
// Basic button interaction demo using jQuery
|
||||
$('#seedBtn').on('click', function() {
|
||||
const $btn = $(this);
|
||||
const originalText = $btn.html();
|
||||
$btn.html('<span class="spinner-border spinner-border-sm me-2" role="status" aria-hidden="true"></span> Seeding...');
|
||||
$btn.prop('disabled', true);
|
||||
|
||||
// Simulate an API call
|
||||
setTimeout(() => {
|
||||
$btn.html(originalText);
|
||||
$btn.prop('disabled', false);
|
||||
alert('Demo records seeded successfully!');
|
||||
}, 1500);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
45
resources/views/layouts/partials/sidebar.blade.php
Normal file
45
resources/views/layouts/partials/sidebar.blade.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<aside id="sidebar">
|
||||
<div class="sidebar-brand d-flex align-items-center">
|
||||
<span class="sidebar-brand-icon"><i class="bi bi-cpu"></i></span>
|
||||
<div>
|
||||
<div class="mb-0 fs-6">Click <span class="badge bg-secondary ms-1" style="font-size: 0.8rem;">ERP</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="px-3 mb-3">
|
||||
<div class="input-group input-group-sm">
|
||||
<span class="input-group-text bg-dark border-secondary text-secondary"><i class="bi bi-search"></i></span>
|
||||
<input type="text" class="form-control bg-dark border-secondary text-light placeholder-secondary" placeholder="Quick search...">
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-heading mt-2">Home</div>
|
||||
<a href="{{ url('/') }}" class="sidebar-nav-item {{ request()->is('/') ? 'active' : '' }}">
|
||||
<i class="bi bi-people me-2"></i> Dashboard
|
||||
</a>
|
||||
<div class="sidebar-heading mt-2">Core Entities</div>
|
||||
<a href="{{ url('/clients') }}" class="sidebar-nav-item {{ request()->is('clients*') ? 'active' : '' }}">
|
||||
<i class="bi bi-people me-2"></i> Clients
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{{ url('/mnos') }}" class="sidebar-nav-item {{ request()->is('mnos*') ? 'active' : '' }}">
|
||||
<i class="bi bi-broadcast-pin me-2"></i> MNO Partners
|
||||
</a>
|
||||
<a href="{{ url('/senderids') }}" class="sidebar-nav-item {{ request()->is('senderids*') ? 'active' : '' }}">
|
||||
<i class="bi bi-alphabet me-2"></i> Sender IDs
|
||||
</a>
|
||||
<a href="{{ url('/shortcodes') }}" class="sidebar-nav-item {{ request()->is('shortcodes*') ? 'active' : '' }}">
|
||||
<i class="bi bi-123 me-2"></i> Short Codes
|
||||
</a>
|
||||
|
||||
<div class="sidebar-heading mt-2">Resources</div>
|
||||
<a href="{{ url('/documents') }}" class="sidebar-nav-item {{ request()->is('documents*') ? 'active' : '' }}">
|
||||
<i class="bi bi-folder2-open me-2"></i> Document Vault
|
||||
</a>
|
||||
|
||||
|
||||
<div class="sidebar-heading mt-2">Others</div>
|
||||
<a href="{{ url('/staff') }}" class="sidebar-nav-item {{ request()->is('staff*') ? 'active' : '' }}">
|
||||
<i class="bi bi-person-badge me-2"></i> Staff Directory
|
||||
</a>
|
||||
</aside>
|
||||
51
resources/views/layouts/partials/sidebarxx.blade.php
Normal file
51
resources/views/layouts/partials/sidebarxx.blade.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<aside id="sidebar">
|
||||
<div class="sidebar-brand d-flex align-items-center">
|
||||
<span class="sidebar-brand-icon"><i class="bi bi-buildings"></i></span>
|
||||
<div>
|
||||
<div class="mb-0 fs-6">CML <span class="badge bg-secondary ms-1" style="font-size: 0.6rem;">ERP</span></div>
|
||||
<div class="text-secondary" style="font-size: 0.65rem; letter-spacing: 1px;">v1.0.0 • PROTOTYPE</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="px-3 mb-3">
|
||||
<div class="input-group input-group-sm">
|
||||
<span class="input-group-text bg-dark border-secondary text-secondary"><i class="bi bi-search"></i></span>
|
||||
<input type="text" class="form-control bg-dark border-secondary text-light placeholder-secondary" placeholder="Quick search menus...">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-heading">Overview</div>
|
||||
<a href="#" class="sidebar-nav-item active"><i class="bi bi-grid-1x2 me-2"></i> Dashboard</a>
|
||||
|
||||
<div class="sidebar-heading mt-2">Clients & MNOs</div>
|
||||
<a href="#" class="sidebar-nav-item d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-people me-2"></i> Clients</span>
|
||||
<span class="badge rounded-pill bg-success text-dark" style="background-color: #c3e6cb !important;">4</span>
|
||||
</a>
|
||||
<a href="#" class="sidebar-nav-item d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-receipt me-2"></i> Network Operators</span>
|
||||
<span class="badge rounded-pill bg-warning text-dark" style="background-color: #ffeeba !important;">3</span>
|
||||
</a>
|
||||
|
||||
<div class="sidebar-heading mt-2">Other Modules</div>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-file-earmark-text me-2"></i> Sender IDs</a>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-file-earmark-text me-2"></i> Short Codes</a>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-file-earmark-text me-2"></i> Documents</a>
|
||||
|
||||
<div class="sidebar-heading mt-2">Utilities</div>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-graph-up-arrow me-2"></i> National Holidays</a>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-gear me-2"></i> Services</a>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-gear me-2"></i> Countries</a>
|
||||
<a href="#" class="sidebar-nav-item"><i class="bi bi-gear me-2"></i> Daily Quotes</a>
|
||||
<!-- <a href="#" class="sidebar-nav-item"><i class="bi bi-gear me-2"></i> Services</a> -->
|
||||
|
||||
<div class="position-absolute bottom-0 w-100 p-3">
|
||||
<div class="d-flex align-items-center bg-dark rounded p-2 text-light" style="background-color: #0d1020 !important;">
|
||||
<div class="rounded-circle bg-primary d-flex justify-content-center align-items-center me-2" style="width: 32px; height: 32px; font-size: 0.8rem;">AD</div>
|
||||
<div>
|
||||
<div class="fs-6 fw-bold" style="font-size: 0.85rem !important;">Admin User</div>
|
||||
<div class="text-secondary" style="font-size: 0.7rem;">admin@nexuserp.io</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
22
resources/views/layouts/partials/topbar.blade.php
Normal file
22
resources/views/layouts/partials/topbar.blade.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<header class="topbar d-flex justify-content-between align-items-center">
|
||||
<div class="d-flex align-items-center">
|
||||
@yield('breadcrumbs')
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="text-secondary me-4" style="font-size: 0.9rem;">
|
||||
<i class="bi bi-clock me-1"></i> <span id="current-time">--:--:--</span>
|
||||
</div>
|
||||
|
||||
<div class="position-relative me-4">
|
||||
<i class="bi bi-bell fs-5 text-secondary"></i>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="rounded-circle bg-light d-flex justify-content-center align-items-center me-2 border text-dark fw-bold" style="width: 32px; height: 32px; font-size: 0.8rem;">
|
||||
{{ substr(auth()->user()->name ?? 'Admin', 0, 1) }}
|
||||
</div>
|
||||
<span class="fw-bold" style="font-size: 0.9rem;">{{ auth()->user()->name ?? 'Admin User' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
Reference in New Issue
Block a user