mirror of
https://github.com/thecyberlearn/quantum-website-2026.git
synced 2026-08-18 14:23:22 +00:00
46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
import { useEffect } from 'react';
|
|
|
|
/**
|
|
* SharedHeader
|
|
*
|
|
* Dynamically loads the shared header script from your static site.
|
|
* Renders nothing itself — the script injects the header into <body>.
|
|
*
|
|
* Usage:
|
|
* import SharedHeader from '@/components/SharedHeader';
|
|
* // Place it once in your root layout:
|
|
* <SharedHeader />
|
|
*
|
|
* To bust cache after updating header.js, change the version param:
|
|
* const HEADER_URL = 'https://quantumtaskai.com/header.js?v=2';
|
|
*/
|
|
|
|
const HEADER_URL = 'https://quantumtaskai.com/header.js';
|
|
|
|
export default function SharedHeader() {
|
|
useEffect(() => {
|
|
// Avoid loading twice (e.g. StrictMode double-invoke)
|
|
if (document.getElementById('sh-header')) return;
|
|
if (document.querySelector(`script[src="${HEADER_URL}"]`)) return;
|
|
|
|
const script = document.createElement('script');
|
|
script.src = HEADER_URL;
|
|
script.async = true;
|
|
document.body.appendChild(script);
|
|
|
|
return () => {
|
|
// Clean up on unmount
|
|
const injectedScript = document.querySelector(`script[src="${HEADER_URL}"]`);
|
|
if (injectedScript) injectedScript.remove();
|
|
|
|
const injectedHeader = document.getElementById('sh-header');
|
|
if (injectedHeader) injectedHeader.remove();
|
|
|
|
const injectedStyles = document.getElementById('sh-styles');
|
|
if (injectedStyles) injectedStyles.remove();
|
|
};
|
|
}, []);
|
|
|
|
return null;
|
|
}
|