<?php
/**
 * Valores por defecto de settings.json (escritorio Flexia).
 * Compartido entre includes/bootstrap.php y el instalador (reset a fábrica).
 *
 * Perfiles por usuario: las claves personales (escritorio, notas, apps, tema, etc.)
 * se guardan en storage/users/{userId}/settings.json — ver user_settings_helpers.php.
 * settings.json en la raíz conserva solo configuración del workspace (empresa, PWA, integraciones).
 */
if (!function_exists('grid_app_default_settings')) {
    /**
     * @return array<string, mixed>
     */
    function grid_app_default_settings(): array
    {
        return [
            'backgroundType' => 'file',
            'backgroundUrl' => '',
            'backgroundImages' => [],
            'backgroundVideos' => [],
            'videoPlayMode' => 'random',
            'slideshowEnabled' => false,
            'slideshowInterval' => 5,
            'youtubeBackground' => '',
            'youtubeBackgroundMobile' => '',
            'youtubePlaylistPC' => [],
            'youtubePlaylistMobile' => [],
            'usePlaylist' => false,
            'youtubePlayMode' => 'random',
            'mosaicColor' => '#000000',
            'selectedTheme' => 'neumorphism',
            'selectedFont' => 'Arial, sans-serif',
            'selectedFontSize' => '16',
            'textColor' => '#000000',
            'gridTextColor' => '#000000',
            'gradientColor1' => '#ff9a9e',
            'gradientColor2' => '#fad0c4',
            'categories' => ['General'],
            'apps' => [],
            'desktopMode' => 'windows',
            'showTypeBadge' => true,
            'typeBadgeMode' => 'icon',
            'inspectBlock' => true,
            'startButtonIcon' => '',
            'recycleBin' => [],
            'taskbarPosition' => 'bottom',
            'pinnedApps' => [],
            'taskbarOpenOrder' => [],
            'fileExplorerTrash' => [],
            'fileExplorerConnections' => [],
            /**
             * Espacios compartidos del explorador (comunitario + departamentos).
             *
             * @var array{
             *   community: array{enabled: bool, displayName: string, hiddenForUserIds: list<string>},
             *   departments: array{enabled: bool, hiddenForUserIds: list<string>}
             * }
             */
            'explorerSharedSpaces' => [
                'community' => [
                    'enabled' => true,
                    'displayName' => 'Espacio comunitario',
                    'hiddenForUserIds' => [],
                ],
                'departments' => [
                    'enabled' => true,
                    'hiddenForUserIds' => [],
                ],
            ],
            'mobileDesktopMode' => true,
            'pageZoom' => 1,
            'iframeZoom' => 1,
            'desktopShortcuts' => [],
            'appLocale' => 'es',
            'openWindowsSessionShared' => '[]',
            'launcherLayout' => null,
            'quickNotes' => [],
            'mediaWidgetItems' => [],
            'osTelemetryIntervalSec' => 22,
            /** Orden persistente de los widgets de la sidebar del menú inicio. */
            'osWidgetOrder' => ['spotify', 'system', 'weather', 'notes', 'media'],
            /**
             * Integraciones con servicios de terceros. Solo se guardan claves PÚBLICAS aquí.
             * Los tokens de cada usuario viven en localStorage (Spotify: OAuth PKCE + Web Playback SDK, Premium).
             * Para credenciales sensibles, usar el vault cifrado de Antara.
             *
             * @var array{
             *   spotify: array{ clientId: string, redirectUri: string, connectionVerified: bool }
             * }
             */
            'integrations' => [
                'spotify' => [
                    'clientId' => '',
                    'redirectUri' => '',
                    /** true tras la primera conexión OAuth exitosa con el Client ID actual. */
                    'connectionVerified' => false,
                ],
            ],
            /** Aviso de disco del proyecto (porcentaje usado en raíz de la app). */
            'osDiskWarnPercent' => 90,
            /** 0 = desactivado; si > 0, aviso cuando el usuario supere este MB de salida HTTP hoy. */
            'osTrafficUserWarnMb' => 0,
            /** Enlace opcional al panel del proveedor de hosting (vacío = no mostrar). */
            'hostingPanelUrl' => '',
            'companyName' => '',
            'companyAddress' => '',
            /** @var array{street:string,city:string,state:string,stateCode:string,country:string,countryCode:string,coordinates:array<string,mixed>|null} */
            'companyLocation' => [
                'street' => '',
                'city' => '',
                'state' => '',
                'stateCode' => '',
                'country' => '',
                'countryCode' => '',
                'coordinates' => null,
            ],
            'companyEmail' => '',
            'companyPhone' => '',
            /** Ruta web relativa si existe logo de cliente (logos_sinapsys/logo_cliente.*); se rellena al detectar archivos. */
            'clientLogoRel' => '',
            /** Encuadre circular para GIF/vídeo del logo (panX, panY, zoomPct, frameInsetRatio, editorViewport). */
            'clientLogoMediaFrame' => null,
            /** personal | company — definido en el instalador. */
            'deploymentKind' => 'personal',
            /** Etiqueta opcional en modo personal (nombre para mostrar). */
            'personalDisplayName' => '',
            /**
             * Sucursales: id, name, code, address, location, email, phone, logos, flags de contacto.
             * En modo empresa cada sucursal puede definir departments[] con positions[] propios.
             * @var list<array<string, mixed>>
             */
            'branches' => [],
            'defaultBranchId' => '',
            /**
             * Política por defecto para acceso entre sucursales (los administradores podrán refinar permisos).
             * crossBranchAccessPolicy: explicit_grant (solo con permisos explícitos) | open_managed (misma empresa, permisos gestionables).
             */
            'branchAccessDefaults' => [
                'crossBranchAccessPolicy' => 'explicit_grant',
                'userDirectoryScope' => 'branch',
            ],
            /**
             * PWA (manifest + metas). Rutas relativas a la raíz del sitio (p. ej. media/pwa/icon-192.png).
             *
             * @var array{
             *   enabled: bool,
             *   name: string,
             *   shortName: string,
             *   description: string,
             *   lang: string,
             *   themeColor: string,
             *   backgroundColor: string,
             *   display: string,
             *   orientation: string,
             *   startUrl: string,
             *   scope: string,
             *   icon192Rel: string,
             *   icon512Rel: string,
             *   iconMaskable512Rel: string,
             *   appleTouch180Rel: string,
             *   splashLaunchRel: string
             * }
             */
            'pwa' => [
                'enabled' => true,
                'name' => 'Flexia',
                'shortName' => 'Flexia',
                'description' => 'Escritorio de aplicaciones',
                'lang' => 'es',
                'themeColor' => '#0ea5e9',
                'backgroundColor' => '#0f172a',
                'display' => 'standalone',
                'orientation' => 'any',
                'startUrl' => './',
                'scope' => './',
                'icon192Rel' => '',
                'icon512Rel' => '',
                'iconMaskable512Rel' => '',
                'appleTouch180Rel' => '',
                'splashLaunchRel' => '',
            ],
        ];
    }
}
