> $apps * @return array> */ public static function decorate(array $apps, string $skin): array { $manifest = self::manifest($skin); return array_map( static function (array $app) use ($manifest): array { $appId = (string) ($app['app_id'] ?? ''); $iconPath = $manifest[$appId] ?? null; if ($iconPath !== null) { $app['icon_path'] = $iconPath; } return $app; }, $apps ); } /** * @return array */ private static function manifest(string $skin): array { return match ($skin) { 'windows' => [ 'welcome-center' => '/assets/desktop/skin-icons/windows/welcome-center.ico', 'public-dashboard' => '/assets/desktop/skin-icons/windows/public-dashboard.ico', 'workspace-manager' => '/assets/desktop/skin-icons/windows/workspace-manager.ico', 'admin-apps' => '/assets/desktop/skin-icons/windows/admin-apps.ico', 'desktop-login' => '/assets/desktop/skin-icons/windows/desktop-login.ico', ], 'apple' => [ 'welcome-center' => '/assets/desktop/skin-icons/apple/welcome-center.svg', 'public-dashboard' => '/assets/desktop/skin-icons/apple/public-dashboard.svg', 'workspace-manager' => '/assets/desktop/skin-icons/apple/workspace-manager.svg', 'admin-apps' => '/assets/desktop/skin-icons/apple/admin-apps.svg', 'desktop-login' => '/assets/desktop/skin-icons/apple/desktop-login.svg', ], 'linux' => [ 'welcome-center' => '/assets/desktop/skin-icons/linux/welcome-center.svg', 'public-dashboard' => '/assets/desktop/skin-icons/linux/public-dashboard.svg', 'workspace-manager' => '/assets/desktop/skin-icons/linux/workspace-manager.svg', 'admin-apps' => '/assets/desktop/skin-icons/linux/admin-apps.svg', 'desktop-login' => '/assets/desktop/skin-icons/linux/desktop-login.svg', ], default => [], }; } }