['label' => 'WMS', 'icon' => 'ti-box', 'color' => 'bg-label-primary', 'home' => 'dashboard/index.php'], 'accounting' => ['label' => 'Accounting', 'icon' => 'ti-calculator', 'color' => 'bg-label-info', 'home' => 'ac_dashboard/index.php'], 'asset' => ['label' => 'Asset Management', 'icon' => 'ti-building-warehouse', 'color' => 'bg-label-success', 'home' => 'asset_dashboard/index.php'], ]; if (!isset($app_registry) || !is_array($app_registry) || !$app_registry) { $app_registry = $_default_app_registry; } else { foreach ($_default_app_registry as $_registry_key => $_registry_defaults) { $app_registry[$_registry_key] = array_merge($_registry_defaults, $app_registry[$_registry_key] ?? []); } } unset($_default_app_registry, $_registry_key, $_registry_defaults); if (!function_exists('app_can_access')) { /** 'all' opens every app. */ function app_can_access(string $access, string $app): bool { return $access === 'all' || $access === $app; } /** The app a user lands in: their single app, or WMS for 'all'. */ function app_default_for_access(array $registry, string $access): string { return ($access !== 'all' && isset($registry[$access])) ? $access : 'wms'; } /** An app's home page, relative to $server_url. */ function app_home_path(array $registry, string $app): string { return $registry[$app]['home'] ?? 'dashboard/index.php'; } }