new gui layout
This commit is contained in:
+126
-130
@@ -389,6 +389,101 @@ select:focus[data-flux-control] {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
.wms-main-panel {
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.wms-page-hero {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 2rem;
|
||||
margin-bottom: 1.75rem;
|
||||
border-radius: 1.35rem;
|
||||
padding: 3rem 3.25rem;
|
||||
background:
|
||||
radial-gradient(circle at 95% 85%, rgb(8 145 178 / 0.62), transparent 36%),
|
||||
linear-gradient(135deg, rgb(4 8 24), rgb(10 18 42) 54%, rgb(7 44 58));
|
||||
color: white;
|
||||
box-shadow: 0 24px 60px rgb(0 0 0 / 0.30);
|
||||
}
|
||||
|
||||
.wms-page-hero-copy {
|
||||
min-width: 0;
|
||||
max-width: 58rem;
|
||||
}
|
||||
|
||||
.wms-page-hero-kicker {
|
||||
margin-bottom: 1rem;
|
||||
color: rgb(103 232 249);
|
||||
font-size: 0.9rem;
|
||||
font-weight: 900;
|
||||
letter-spacing: 0.42em;
|
||||
}
|
||||
|
||||
.wms-page-hero-title {
|
||||
margin: 0;
|
||||
font-size: clamp(2.5rem, 5vw, 4.7rem);
|
||||
font-weight: 900;
|
||||
line-height: 0.98;
|
||||
letter-spacing: -0.06em;
|
||||
}
|
||||
|
||||
.wms-page-hero-description {
|
||||
max-width: 52rem;
|
||||
margin-top: 1.2rem;
|
||||
color: rgb(203 213 225);
|
||||
font-size: clamp(1rem, 1.55vw, 1.45rem);
|
||||
line-height: 1.45;
|
||||
}
|
||||
|
||||
.wms-page-hero-actions {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
gap: 1rem;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.wms-page-hero-stat {
|
||||
display: grid;
|
||||
min-width: 13.75rem;
|
||||
gap: 1rem;
|
||||
border-radius: 1.2rem;
|
||||
background: rgb(51 65 85 / 0.72);
|
||||
padding: 1.45rem 1.6rem;
|
||||
color: rgb(203 213 225);
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
|
||||
.wms-page-hero-stat strong {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
color: white;
|
||||
font-size: 2rem;
|
||||
font-weight: 900;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.wms-page-hero-stat strong i {
|
||||
color: rgb(74 222 128);
|
||||
}
|
||||
|
||||
.wms-hero-mobile-menu {
|
||||
display: none;
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
place-items: center;
|
||||
align-self: flex-start;
|
||||
border-radius: 0.85rem;
|
||||
background: rgb(255 255 255 / 0.12);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.wms-mobile-header {
|
||||
display: none;
|
||||
}
|
||||
@@ -438,12 +533,12 @@ select:focus[data-flux-control] {
|
||||
justify-items: center;
|
||||
}
|
||||
|
||||
html[data-wms-sidebar='collapsed'] .wms-toggle-expanded {
|
||||
html[data-wms-sidebar='collapsed'] .wms-sidebar-toggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html[data-wms-sidebar='collapsed'] .wms-toggle-collapsed {
|
||||
display: inline;
|
||||
html[data-wms-sidebar='collapsed'] .wms-brand-mark {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media (max-width: 1023px) {
|
||||
@@ -537,135 +632,36 @@ select:focus[data-flux-control] {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.wms-page-hero {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
gap: 1.5rem;
|
||||
margin-bottom: 1rem;
|
||||
border-radius: 1rem;
|
||||
padding: 1.35rem;
|
||||
}
|
||||
|
||||
.wms-page-hero-actions {
|
||||
width: 100%;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.wms-page-hero-stat {
|
||||
min-width: min(12rem, 100%);
|
||||
flex: 1 1 12rem;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.wms-page-hero-stat strong {
|
||||
font-size: 1.45rem;
|
||||
}
|
||||
|
||||
.wms-hero-mobile-menu {
|
||||
display: inline-grid;
|
||||
}
|
||||
|
||||
.wms-content {
|
||||
padding: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@layer components {
|
||||
.wms-main-panel {
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: column;
|
||||
background: rgb(250 250 250);
|
||||
}
|
||||
|
||||
.dark .wms-main-panel {
|
||||
background: rgb(9 9 11);
|
||||
}
|
||||
|
||||
.wms-page-hero {
|
||||
margin: 0.75rem 1rem 0;
|
||||
overflow: hidden;
|
||||
border-radius: 1rem;
|
||||
background: linear-gradient(135deg, rgb(2 6 23) 0%, rgb(15 23 42) 55%, rgb(8 80 104) 100%);
|
||||
color: white;
|
||||
box-shadow: 0 24px 50px rgb(0 0 0 / 0.22);
|
||||
}
|
||||
|
||||
.wms-page-hero-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 1rem;
|
||||
padding: clamp(1rem, 2vw, 1.5rem);
|
||||
}
|
||||
|
||||
.wms-page-eyebrow {
|
||||
margin: 0 0 1.15rem;
|
||||
color: rgb(103 232 249);
|
||||
font-size: 0.9rem;
|
||||
font-weight: 800;
|
||||
letter-spacing: 0.32em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.wms-page-title {
|
||||
margin: 0;
|
||||
max-width: 58rem;
|
||||
color: white;
|
||||
font-size: clamp(1.4rem, 2vw, 2rem);
|
||||
font-weight: 850;
|
||||
letter-spacing: -0.06em;
|
||||
line-height: 0.96;
|
||||
}
|
||||
|
||||
.wms-page-subtitle {
|
||||
margin: 0.5rem 0 0;
|
||||
max-width: 60rem;
|
||||
color: rgb(203 213 225);
|
||||
font-size: 0.95rem;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.wms-page-metrics {
|
||||
display: grid;
|
||||
min-width: min(32rem, 100%);
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.wms-page-metric-card {
|
||||
border-radius: 1.35rem;
|
||||
background: rgb(255 255 255 / 0.12);
|
||||
padding: 1.55rem;
|
||||
backdrop-filter: blur(16px);
|
||||
}
|
||||
|
||||
.wms-page-metric-label {
|
||||
display: block;
|
||||
color: rgb(203 213 225);
|
||||
font-size: 1rem;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.wms-page-metric-value {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.65rem;
|
||||
margin-top: 1rem;
|
||||
color: white;
|
||||
font-size: clamp(1.6rem, 2.4vw, 2.25rem);
|
||||
font-weight: 850;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.wms-page-metric-ok {
|
||||
color: rgb(110 231 183);
|
||||
}
|
||||
|
||||
.wms-content {
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
|
||||
.module-page > .row > .col-12:first-child:has(.module-hero) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 1023px) {
|
||||
.wms-page-hero {
|
||||
margin: 1rem 1rem 0;
|
||||
border-radius: 1.35rem;
|
||||
}
|
||||
|
||||
.wms-page-hero-content {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
padding: 1.6rem;
|
||||
}
|
||||
|
||||
.wms-page-metrics {
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.wms-page-metrics {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
@props([
|
||||
'eyebrow' => 'MPBA WMS',
|
||||
'title',
|
||||
'description' => null,
|
||||
'stats' => [],
|
||||
])
|
||||
|
||||
<section class="wms-page-hero">
|
||||
<div class="wms-page-hero-copy">
|
||||
<p class="wms-page-hero-eyebrow">{{ $eyebrow }}</p>
|
||||
<h1 class="wms-page-hero-title">{{ $title }}</h1>
|
||||
@if($description)
|
||||
<p class="wms-page-hero-description">{{ $description }}</p>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@if(count($stats))
|
||||
<div class="wms-page-hero-stats">
|
||||
@foreach($stats as $stat)
|
||||
<article class="wms-page-hero-stat">
|
||||
<p class="wms-page-hero-stat-label">{{ $stat['label'] ?? '' }}</p>
|
||||
<p class="wms-page-hero-stat-value">
|
||||
@if(! empty($stat['icon']))
|
||||
<i class="{{ $stat['icon'] }}" aria-hidden="true"></i>
|
||||
@endif
|
||||
<span>{{ $stat['value'] ?? '' }}</span>
|
||||
</p>
|
||||
</article>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</section>
|
||||
@@ -11,7 +11,7 @@
|
||||
<aside class="wms-sidebar" data-wms-sidebar aria-label="{{ __('Main navigation') }}">
|
||||
<div class="wms-sidebar-header">
|
||||
<a href="{{ auth()->user()?->isMpbaPlatformAdmin() && Route::has('platform.dashboard') ? route('platform.dashboard') : route('dashboard') }}" wire:navigate class="wms-brand" aria-label="{{ __('Warehouse Management System') }}">
|
||||
<span class="wms-brand-mark"><span class="wms-brand-mark-inner">W</span></span>
|
||||
<span class="wms-brand-mark" data-wms-brand-toggle title="{{ __('Expand sidebar') }}"><span class="wms-brand-mark-inner">W</span></span>
|
||||
<span class="wms-brand-copy" data-wms-sidebar-label>
|
||||
<span class="wms-brand-title">{{ __('Warehouse Management System') }}</span>
|
||||
<span class="wms-brand-subtitle">MPBA</span>
|
||||
@@ -20,25 +20,16 @@
|
||||
|
||||
<button type="button" class="wms-sidebar-toggle" data-wms-sidebar-toggle aria-label="{{ __('Collapse sidebar') }}" aria-expanded="true">
|
||||
<span class="wms-toggle-expanded">‹</span>
|
||||
<span class="wms-toggle-collapsed">›</span>
|
||||
</button>
|
||||
|
||||
<button type="button" class="wms-mobile-close" data-wms-mobile-close aria-label="{{ __('Close navigation') }}">×</button>
|
||||
</div>
|
||||
|
||||
<nav class="wms-sidebar-nav" aria-label="{{ __('Main navigation') }}">
|
||||
|
||||
@php
|
||||
$moduleStatusesPath = base_path('modules_statuses.json');
|
||||
$moduleStatuses = is_file($moduleStatusesPath)
|
||||
? json_decode((string) file_get_contents($moduleStatusesPath), true)
|
||||
: [];
|
||||
$moduleEnabled = static fn (string $module): bool => ($moduleStatuses[$module] ?? false) === true;
|
||||
@endphp
|
||||
<div class="wms-sidebar-group">
|
||||
<div class="wms-sidebar-heading" data-wms-sidebar-label>{{ __('Platform') }}</div>
|
||||
|
||||
@if($moduleEnabled('Platform') && auth()->user()?->isMpbaPlatformAdmin() && Route::has('platform.dashboard'))
|
||||
@if(auth()->user()?->isMpbaPlatformAdmin() && Route::has('platform.dashboard'))
|
||||
<a href="{{ route('platform.dashboard') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('platform.dashboard')) is-active @endif" title="{{ __('Platform') }}">
|
||||
<i class="fa-solid fa-screwdriver-wrench wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Platform') }}</span>
|
||||
@@ -54,37 +45,37 @@
|
||||
<div class="wms-sidebar-group">
|
||||
<div class="wms-sidebar-heading" data-wms-sidebar-label>{{ __('Operations') }}</div>
|
||||
|
||||
@if($moduleEnabled('Analytics') && Route::has('analytics.index'))
|
||||
@if(Route::has('analytics.index'))
|
||||
<a href="{{ route('analytics.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('analytics.*')) is-active @endif" title="{{ __('Analytics') }}">
|
||||
<i class="fa-solid fa-chart-line wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Analytics') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('InventoryManagement') && Route::has('inventory-management.index'))
|
||||
@if(Route::has('inventory-management.index'))
|
||||
<a href="{{ route('inventory-management.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('inventory-management.*')) is-active @endif" title="{{ __('Inventory') }}">
|
||||
<i class="fa-solid fa-boxes-stacked wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Inventory') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Replenishment') && Route::has('replenishment.index'))
|
||||
@if(Route::has('replenishment.index'))
|
||||
<a href="{{ route('replenishment.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('replenishment.*')) is-active @endif" title="{{ __('Replenishment') }}">
|
||||
<i class="fa-solid fa-arrows-rotate wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Replenishment') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Shipping') && Route::has('shipping.index'))
|
||||
@if(Route::has('shipping.index'))
|
||||
<a href="{{ route('shipping.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('shipping.*')) is-active @endif" title="{{ __('Shipping') }}">
|
||||
<i class="fa-solid fa-truck-fast wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Shipping') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Transportation') && Route::has('transportation.index'))
|
||||
@if(Route::has('transportation.index'))
|
||||
<a href="{{ route('transportation.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('transportation.*')) is-active @endif" title="{{ __('Transportation') }}">
|
||||
<i class="fa-solid fa-truck-ramp-box wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Transportation') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('CarrierManagement') && Route::has('carrier-management.index'))
|
||||
@if(Route::has('carrier-management.index'))
|
||||
<a href="{{ route('carrier-management.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('carrier-management.*')) is-active @endif" title="{{ __('Carriers') }}">
|
||||
<i class="fa-solid fa-route wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Carriers') }}</span>
|
||||
@@ -95,25 +86,25 @@
|
||||
<div class="wms-sidebar-group">
|
||||
<div class="wms-sidebar-heading" data-wms-sidebar-label>{{ __('Integration & Reporting') }}</div>
|
||||
|
||||
@if($moduleEnabled('M3Integration') && Route::has('m3-integration.index'))
|
||||
@if(Route::has('m3-integration.index'))
|
||||
<a href="{{ route('m3-integration.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('m3-integration.*')) is-active @endif" title="{{ __('M3 Integration') }}">
|
||||
<i class="fa-solid fa-plug-circle-bolt wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('M3 Integration') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('SentinelIntegration') && Route::has('sentinel-integration.index'))
|
||||
@if(Route::has('sentinel-integration.index'))
|
||||
<a href="{{ route('sentinel-integration.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('sentinel-integration.*')) is-active @endif" title="{{ __('Sentinel') }}">
|
||||
<i class="fa-solid fa-satellite-dish wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Sentinel') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('DocumentArchive') && Route::has('document-archive.index'))
|
||||
@if(Route::has('document-archive.index'))
|
||||
<a href="{{ route('document-archive.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('document-archive.*')) is-active @endif" title="{{ __('Documents') }}">
|
||||
<i class="fa-solid fa-box-archive wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Documents') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Reporting') && Route::has('reporting.index'))
|
||||
@if(Route::has('reporting.index'))
|
||||
<a href="{{ route('reporting.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('reporting.*')) is-active @endif" title="{{ __('Reporting') }}">
|
||||
<i class="fa-solid fa-file-lines wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Reporting') }}</span>
|
||||
@@ -124,31 +115,31 @@
|
||||
<div class="wms-sidebar-group">
|
||||
<div class="wms-sidebar-heading" data-wms-sidebar-label>{{ __('Administration') }}</div>
|
||||
|
||||
@if($moduleEnabled('Warehouse') && Route::has('warehouses.index'))
|
||||
@if(Route::has('warehouses.index'))
|
||||
<a href="{{ route('warehouses.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('warehouses.*')) is-active @endif" title="{{ __('Warehouses') }}">
|
||||
<i class="fa-solid fa-warehouse wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Warehouses') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Warehouse') && Route::has('warehouse-rules.index'))
|
||||
@if(Route::has('warehouse-rules.index'))
|
||||
<a href="{{ route('warehouse-rules.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('warehouse-rules.*')) is-active @endif" title="{{ __('Validation Rules') }}">
|
||||
<i class="fa-solid fa-shield-halved wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Validation Rules') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Configuration') && Route::has('configuration.index'))
|
||||
@if(Route::has('configuration.index'))
|
||||
<a href="{{ route('configuration.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('configuration.*')) is-active @endif" title="{{ __('Configuration') }}">
|
||||
<i class="fa-solid fa-sliders wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Configuration') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Security') && Route::has('security.index'))
|
||||
@if(Route::has('security.index'))
|
||||
<a href="{{ route('security.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('security.*')) is-active @endif" title="{{ __('Security') }}">
|
||||
<i class="fa-solid fa-user-shield wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Security') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Audit') && Route::has('audit.index'))
|
||||
@if(Route::has('audit.index'))
|
||||
<a href="{{ route('audit.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('audit.*')) is-active @endif" title="{{ __('Audit') }}">
|
||||
<i class="fa-solid fa-clipboard-check wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Audit') }}</span>
|
||||
@@ -156,23 +147,23 @@
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@if($moduleEnabled('Platform') && auth()->user()?->isMpbaPlatformAdmin())
|
||||
@if(auth()->user()?->isMpbaPlatformAdmin())
|
||||
<div class="wms-sidebar-group">
|
||||
<div class="wms-sidebar-heading" data-wms-sidebar-label>{{ __('Platform Administration') }}</div>
|
||||
|
||||
@if($moduleEnabled('Platform') && Route::has('platform.companies.index'))
|
||||
@if(Route::has('platform.companies.index'))
|
||||
<a href="{{ route('platform.companies.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('platform.companies.*')) is-active @endif" title="{{ __('Companies') }}">
|
||||
<i class="fa-solid fa-building wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Companies') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Platform') && Route::has('platform.licenses.index'))
|
||||
@if(Route::has('platform.licenses.index'))
|
||||
<a href="{{ route('platform.licenses.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('platform.licenses.*')) is-active @endif" title="{{ __('Licences') }}">
|
||||
<i class="fa-solid fa-key wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Licences') }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@if($moduleEnabled('Platform') && Route::has('platform.payments.index'))
|
||||
@if(Route::has('platform.payments.index'))
|
||||
<a href="{{ route('platform.payments.index') }}" wire:navigate class="wms-sidebar-link @if(request()->routeIs('platform.payments.*')) is-active @endif" title="{{ __('Payments') }}">
|
||||
<i class="fa-solid fa-credit-card wms-sidebar-icon" aria-hidden="true"></i>
|
||||
<span data-wms-sidebar-label>{{ __('Payments') }}</span>
|
||||
@@ -230,38 +221,45 @@
|
||||
</aside>
|
||||
|
||||
<div class="wms-main-panel">
|
||||
<section class="wms-page-hero" aria-labelledby="wms-page-title">
|
||||
<div class="wms-page-hero-content">
|
||||
<div>
|
||||
<p class="wms-page-eyebrow">{{ __('MPBA WMS') }}</p>
|
||||
<h1 id="wms-page-title" class="wms-page-title">{{ $title ?? __('Platform administration') }}</h1>
|
||||
<p class="wms-page-subtitle">{{ __('Manage tenant companies, licences, payments, warehouses and internal API operations from one resilient control plane.') }}</p>
|
||||
</div>
|
||||
|
||||
<div class="wms-page-metrics" aria-label="{{ __('Platform summary') }}">
|
||||
<div class="wms-page-metric-card">
|
||||
<span class="wms-page-metric-label">{{ __('System status') }}</span>
|
||||
<span class="wms-page-metric-value wms-page-metric-ok">
|
||||
<i class="fa-solid fa-heart-pulse" aria-hidden="true"></i>
|
||||
{{ __('OK') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="wms-page-metric-card">
|
||||
<span class="wms-page-metric-label">{{ __('Paid £') }}</span>
|
||||
<span class="wms-page-metric-value">
|
||||
@isset($paymentsTotal)
|
||||
{{ number_format($paymentsTotal / 100, 2) }}
|
||||
@else
|
||||
0.00
|
||||
@endisset
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@php
|
||||
$pageTitle = $title ?? __('Warehouse Management System');
|
||||
$pageDescription = match (true) {
|
||||
request()->routeIs('platform.dashboard') => __('Manage tenant companies, licences, payments, warehouses and internal API operations from one resilient control plane.'),
|
||||
request()->routeIs('platform.companies.*') => __('Manage tenant companies, ownership, users and the warehouse records attached to each organisation.'),
|
||||
request()->routeIs('platform.licenses.*') => __('Review licence allocation, account status and platform access across MPBA tenants.'),
|
||||
request()->routeIs('platform.payments.*') => __('Track payment activity, paid totals and tenant billing status from one administration screen.'),
|
||||
request()->routeIs('warehouses.*') => __('Maintain warehouse locations, operational details and company ownership records.'),
|
||||
request()->routeIs('inventory-management.*') => __('Monitor inventory activity, stock positions and warehouse item control.'),
|
||||
request()->routeIs('analytics.*') => __('Review operational insight, warehouse trends and management reporting.'),
|
||||
default => __('Manage tenant companies, licences, payments, warehouses and internal API operations from one resilient control plane.'),
|
||||
};
|
||||
@endphp
|
||||
|
||||
<main class="wms-content">
|
||||
<section class="wms-page-hero" aria-labelledby="wms-page-title">
|
||||
<div class="wms-page-hero-copy">
|
||||
<div class="wms-page-hero-kicker">{{ __('MPBA WMS') }}</div>
|
||||
<h1 id="wms-page-title" class="wms-page-hero-title">{{ $pageTitle }}</h1>
|
||||
<p class="wms-page-hero-description">{{ $pageDescription }}</p>
|
||||
</div>
|
||||
|
||||
<div class="wms-page-hero-actions">
|
||||
<button type="button" class="wms-hero-mobile-menu" data-wms-mobile-open aria-label="{{ __('Open navigation') }}">
|
||||
<i class="fa-solid fa-bars" aria-hidden="true"></i>
|
||||
</button>
|
||||
|
||||
<div class="wms-page-hero-stat">
|
||||
<span>{{ __('System status') }}</span>
|
||||
<strong><i class="fa-solid fa-heart-pulse" aria-hidden="true"></i> {{ __('OK') }}</strong>
|
||||
</div>
|
||||
|
||||
<div class="wms-page-hero-stat">
|
||||
<span>{{ __('Paid £') }}</span>
|
||||
<strong>0.00</strong>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{ $slot }}
|
||||
</main>
|
||||
</div>
|
||||
@@ -304,6 +302,19 @@
|
||||
applySidebarState();
|
||||
});
|
||||
});
|
||||
document.querySelectorAll('[data-wms-brand-toggle]').forEach((button) => {
|
||||
if (button.dataset.wmsBound === '1') return;
|
||||
button.dataset.wmsBound = '1';
|
||||
button.addEventListener('click', function (event) {
|
||||
const root = document.documentElement;
|
||||
if (root.dataset.wmsSidebar !== 'collapsed') return;
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
root.dataset.wmsSidebar = 'expanded';
|
||||
localStorage.setItem(STORAGE_KEY, 'expanded');
|
||||
applySidebarState();
|
||||
});
|
||||
});
|
||||
document.querySelectorAll('[data-wms-mobile-open]').forEach((button) => {
|
||||
if (button.dataset.wmsBound === '1') return;
|
||||
button.dataset.wmsBound = '1';
|
||||
|
||||
Reference in New Issue
Block a user