/**
* Emits + for the media CDN
* domain (R2_PUBLIC_URL), so the browser opens the TLS/DNS connection to the
* media host early — before it hits the first . Saves ~150–300ms on the
* first image load.
*
* Reads the domain from R2_PUBLIC_URL (the same env var buildR2Storage uses),
* so there's ONE source of truth — no per-project hardcoded domain. Renders
* nothing when R2_PUBLIC_URL isn't set (local disk / no CDN → nothing to
* preconnect).
*
* Server Component — drop it in the
of your locale layout:
*
* import { MediaPreconnect } from '@intecion/ipal-kit/rsc'
* // in (or top of — Next hoists link tags):
*
*/
export function MediaPreconnect() {
const publicUrl = process.env.R2_PUBLIC_URL?.replace(/\/$/, '')
if (!publicUrl) {return null}
// Origin only (scheme + host) — preconnect targets an origin, not a path.
let origin: string
try {
origin = new URL(publicUrl).origin
} catch {
return null // malformed URL → skip rather than emit a broken tag
}
return (
<>
>
)
}
export default MediaPreconnect