@if($page['props']['noindex'] ?? false) @endif {{-- Name only, never the version: this tag is served to anyone who asks, and publishing the exact release tells a scanner which advisories apply to this installation. What it buys is ecosystem visibility — surveys like BuiltWith count ProjectSend installs from this and nothing else. --}} @if(app(\App\Modules\Platform\Attribution\Attribution::class)->visible()) @endif {{ config('app.name', 'ProjectSend') }} {{-- Which cookie holds this installation's CSRF token. Named after the installation rather than the framework, so a neighbouring Laravel app on the same hostname cannot overwrite it — and there is nothing on the client that could work the name out. --}} @routes @viteReactRefresh @php // A page component may be shipped by an installed package // under vendor///resources/js/pages/ instead of // this app's own resources/js/pages/. This must stay in step // with the client-side glob in resources/js/app.tsx — they // are two halves of one lookup, and when they disagreed the // page built cleanly, type-checked cleanly, and then answered // 500 with "Unable to locate file in Vite manifest". $pageComponentPath = "resources/js/pages/{$page['component']}.tsx"; if (! file_exists(base_path($pageComponentPath))) { $packageMatch = glob(base_path("vendor/*/*/resources/js/pages/{$page['component']}.tsx"))[0] ?? null; if ($packageMatch !== null) { $pageComponentPath = ltrim(str_replace(base_path(), '', $packageMatch), '/'); } } @endphp @vite(['resources/js/app.tsx', $pageComponentPath]) @inertiaHead {{-- Operator-authored snippets (Community only). Raw by design — see CustomAssetsBridge, which returns '' unless the edition grants the capability and the module is actually installed. This is the one root view for all three surfaces (public, portal, staff), so it is the only place they need wiring. --}} {!! app(\App\Modules\Platform\CustomAssets\CustomAssetsBridge::class)->render('head') !!} {!! app(\App\Modules\Platform\CustomAssets\CustomAssetsBridge::class)->render('body_top') !!} @inertia {!! app(\App\Modules\Platform\CustomAssets\CustomAssetsBridge::class)->render('body_bottom') !!}