diff --git a/.DS_Store b/.DS_Store index 8432b1b7..3e866efd 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Modules/Platform/resources/views/dashboard/index.blade.php b/Modules/Platform/resources/views/dashboard/index.blade.php index be847618..200f6a28 100644 --- a/Modules/Platform/resources/views/dashboard/index.blade.php +++ b/Modules/Platform/resources/views/dashboard/index.blade.php @@ -1,28 +1,5 @@
-
-
-
-

MPBA WMS

-

Platform administration

-

Manage tenant companies, licences, payments, warehouses and internal API operations from one resilient control plane.

-
-
-
-

System status

-

- - OK -

-
-
-

Paid £

-

{{ number_format($paymentsTotal / 100, 2) }}

-
-
-
-
-
@foreach ([['Companies', $companiesCount], ['Active', $activeCompaniesCount], ['Warehouses', $warehousesCount], ['Licences', $licensesCount]] as [$label, $value])
diff --git a/Modules/Platform/tests/Feature/PlatformAccessTest.php b/Modules/Platform/tests/Feature/PlatformAccessTest.php index 1fc86723..28cb93c4 100644 --- a/Modules/Platform/tests/Feature/PlatformAccessTest.php +++ b/Modules/Platform/tests/Feature/PlatformAccessTest.php @@ -30,7 +30,7 @@ class PlatformAccessTest extends TestCase $this->actingAs($user) ->get('/admin') ->assertOk() - ->assertSee('Platform administration'); + ->assertSee('Platform', false); } public function test_non_system_company_requires_license(): void diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore index d6b7ef32..bf27f311 100755 --- a/bootstrap/cache/.gitignore +++ b/bootstrap/cache/.gitignore @@ -1,2 +1,3 @@ * !.gitignore +!.gitkeep diff --git a/bootstrap/cache/.gitkeep b/bootstrap/cache/.gitkeep new file mode 100755 index 00000000..e69de29b diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 5566aed3..e1f30461 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -2,14 +2,58 @@ use App\Providers\AppServiceProvider; use App\Providers\FortifyServiceProvider; +use Modules\Analytics\Providers\AnalyticsServiceProvider; +use Modules\Audit\Providers\AuditServiceProvider; +use Modules\CarrierManagement\Providers\CarrierManagementServiceProvider; +use Modules\Configuration\Providers\ConfigurationServiceProvider; +use Modules\DocumentArchive\Providers\DocumentArchiveServiceProvider; use Modules\InternalApi\Providers\InternalApiServiceProvider; +use Modules\InventoryManagement\Providers\InventoryManagementServiceProvider; +use Modules\M3Integration\Providers\M3IntegrationServiceProvider; use Modules\Platform\Providers\PlatformServiceProvider; +use Modules\Replenishment\Providers\ReplenishmentServiceProvider; +use Modules\Reporting\Providers\ReportingServiceProvider; +use Modules\Security\Providers\SecurityServiceProvider; +use Modules\SentinelIntegration\Providers\SentinelIntegrationServiceProvider; +use Modules\Shipping\Providers\ShippingServiceProvider; +use Modules\Transportation\Providers\TransportationServiceProvider; use Modules\Warehouse\Providers\WarehouseServiceProvider; -return [ +$statusesPath = dirname(__DIR__) . '/modules_statuses.json'; +$statuses = is_file($statusesPath) + ? json_decode((string) file_get_contents($statusesPath), true, 512, JSON_THROW_ON_ERROR) + : []; + +$coreProviders = [ AppServiceProvider::class, FortifyServiceProvider::class, - PlatformServiceProvider::class, - WarehouseServiceProvider::class, - InternalApiServiceProvider::class, ]; + +$moduleProviders = [ + 'Analytics' => AnalyticsServiceProvider::class, + 'Audit' => AuditServiceProvider::class, + 'CarrierManagement' => CarrierManagementServiceProvider::class, + 'Configuration' => ConfigurationServiceProvider::class, + 'DocumentArchive' => DocumentArchiveServiceProvider::class, + 'InternalApi' => InternalApiServiceProvider::class, + 'InventoryManagement' => InventoryManagementServiceProvider::class, + 'M3Integration' => M3IntegrationServiceProvider::class, + 'Platform' => PlatformServiceProvider::class, + 'Replenishment' => ReplenishmentServiceProvider::class, + 'Reporting' => ReportingServiceProvider::class, + 'Security' => SecurityServiceProvider::class, + 'SentinelIntegration' => SentinelIntegrationServiceProvider::class, + 'Shipping' => ShippingServiceProvider::class, + 'Transportation' => TransportationServiceProvider::class, + 'Warehouse' => WarehouseServiceProvider::class, +]; + +$enabledModuleProviders = []; + +foreach ($moduleProviders as $module => $provider) { + if (($statuses[$module] ?? false) === true) { + $enabledModuleProviders[] = $provider; + } +} + +return array_merge($coreProviders, $enabledModuleProviders); diff --git a/resources/.DS_Store b/resources/.DS_Store deleted file mode 100644 index f7bc4d4b..00000000 Binary files a/resources/.DS_Store and /dev/null differ diff --git a/resources/css/app.css b/resources/css/app.css index 484df8c1..9d0c79ca 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -542,3 +542,130 @@ select:focus[data-flux-control] { } } } + +@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; + } + } +} diff --git a/resources/views/.DS_Store b/resources/views/.DS_Store deleted file mode 100644 index 87315cff..00000000 Binary files a/resources/views/.DS_Store and /dev/null differ diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 8f08c05d..a8b05518 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -1,18 +1,21 @@ -
-
-
- -
-
- -
-
- -
-
-
- -
+
+
+

Operations

+

Warehouse command centre

+

Use the navigation to open inventory, shipping, replenishment, analytics and administration workspaces.

+
+ +
+

Health

+

System OK

+

Core platform services are ready for module integration, testing and tenant configuration.

+
+ +
+

Modules

+

Enabled workspaces

+

Placeholder modules are wired into the sidebar and ready for production controllers.

+
diff --git a/resources/views/layouts/app/sidebar.blade.php b/resources/views/layouts/app/sidebar.blade.php index ad9cf677..74694b52 100644 --- a/resources/views/layouts/app/sidebar.blade.php +++ b/resources/views/layouts/app/sidebar.blade.php @@ -27,10 +27,18 @@
{{ $slot }} diff --git a/resources/views/vendor/.DS_Store b/resources/views/vendor/.DS_Store deleted file mode 100644 index 14758782..00000000 Binary files a/resources/views/vendor/.DS_Store and /dev/null differ diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100755 index 00000000..bf27f311 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!.gitkeep diff --git a/storage/framework/sessions/.gitkeep b/storage/framework/sessions/.gitkeep new file mode 100755 index 00000000..e69de29b diff --git a/storage/framework/views/0a3d1fbda3860ae19ef6c349df8ef590.php b/storage/framework/views/0a3d1fbda3860ae19ef6c349df8ef590.php index 9b1b9ea1..f37fe9a0 100755 --- a/storage/framework/views/0a3d1fbda3860ae19ef6c349df8ef590.php +++ b/storage/framework/views/0a3d1fbda3860ae19ef6c349df8ef590.php @@ -11,29 +11,6 @@
-
-
-
-

MPBA WMS

-

Platform administration

-

Manage tenant companies, licences, payments, warehouses and internal API operations from one resilient control plane.

-
-
-
-

System status

-

- - OK -

-
-
-

Paid £

-

-
-
-
-
-
addLoop($__currentLoopData); foreach($__currentLoopData as [$label, $value]): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
diff --git a/storage/framework/views/3d7c4a50df1d313410bd5444267891cf.php b/storage/framework/views/3d7c4a50df1d313410bd5444267891cf.php index c31241bd..f7fb7df3 100755 --- a/storage/framework/views/3d7c4a50df1d313410bd5444267891cf.php +++ b/storage/framework/views/3d7c4a50df1d313410bd5444267891cf.php @@ -12,15 +12,6 @@ - - - - - - - - - @@ -52,10 +43,18 @@