// Header COMPARTIDO — fuente única de verdad para las 5 páginas (function () { const { useState, useEffect, useRef } = React; // ── CSS global (solo se inyecta una vez) ─────────────────────── if (!document.getElementById('bx-global-styles')) { const s = document.createElement('style'); s.id = 'bx-global-styles'; s.textContent = ` .bx-card-3d { transition: transform .35s cubic-bezier(.23,1,.32,1), box-shadow .35s !important; transform-style: preserve-3d; } .bx-card-3d:hover { transform: perspective(700px) rotateX(-4deg) rotateY(4deg) translateY(-5px) !important; box-shadow: 0 20px 40px rgba(0,0,0,.3), 4px 4px 0 rgba(255,255,255,.04) !important; } .bx-card-3d-left:hover { transform: perspective(700px) rotateX(-4deg) rotateY(-4deg) translateY(-5px) !important; box-shadow: 0 20px 40px rgba(0,0,0,.3), -4px 4px 0 rgba(255,255,255,.04) !important; } @keyframes bxDevFloat { 0%,100%{transform:translateY(0) rotateX(3deg) rotateY(-5deg)} 50%{transform:translateY(-12px) rotateX(-1deg) rotateY(3deg)} } .bx-dev-float { animation: bxDevFloat 5s ease-in-out infinite; transform-style: preserve-3d; } img.btech-logo { filter: drop-shadow(0.62px 0 0.4px rgba(255,255,255,.95)) drop-shadow(-0.62px 0 0.4px rgba(255,255,255,.95)) drop-shadow(0 0.62px 0.4px rgba(255,255,255,.95)) drop-shadow(0 -0.62px 0.4px rgba(255,255,255,.95)) drop-shadow(0.42px 0.42px 0.4px rgba(255,255,255,.9)) drop-shadow(-0.42px -0.42px 0.4px rgba(255,255,255,.9)) drop-shadow(0.42px -0.42px 0.4px rgba(255,255,255,.9)) drop-shadow(-0.42px 0.42px 0.4px rgba(255,255,255,.9)); } @media (max-width: 768px) { img.btech-logo { filter: drop-shadow(0.94px 0 0.5px rgba(255,255,255,.98)) drop-shadow(-0.94px 0 0.5px rgba(255,255,255,.98)) drop-shadow(0 0.94px 0.5px rgba(255,255,255,.98)) drop-shadow(0 -0.94px 0.5px rgba(255,255,255,.98)) drop-shadow(0.62px 0.62px 0.5px rgba(255,255,255,.92)) drop-shadow(-0.62px -0.62px 0.5px rgba(255,255,255,.92)) drop-shadow(0.62px -0.62px 0.5px rgba(255,255,255,.92)) drop-shadow(-0.62px 0.62px 0.5px rgba(255,255,255,.92)) !important; } } a.bx-btn-primary { transition: transform .2s, box-shadow .2s !important; } a.bx-btn-primary:hover { transform: translateY(-3px) !important; box-shadow: 0 12px 30px rgba(245,166,35,.45) !important; } a.bx-btn-ghost { transition: border-color .2s, color .2s, background .2s !important; } a.bx-btn-ghost:hover { border-color: rgba(248,244,238,.8) !important; color: #fff !important; background: rgba(255,255,255,.06) !important; } a.bx-btn-link { transition: opacity .2s, letter-spacing .2s !important; } a.bx-btn-link:hover { opacity: 1 !important; letter-spacing: .4px !important; } a.bx-nav-link { transition: color .18s !important; } a.bx-nav-link:hover { color: #fff !important; } a.bx-nav-cta { transition: transform .2s, box-shadow .2s !important; } a.bx-nav-cta:hover { transform: translateY(-2px) !important; box-shadow: 0 8px 22px rgba(245,166,35,.4) !important; } /* Lang picker */ .bx-lang-btn { background:none;border:1px solid rgba(248,244,238,.22);border-radius:100px;cursor:pointer;display:flex;align-items:center;gap:6px;padding:7px 13px;color:rgba(248,244,238,.8);font-size:13px;font-weight:600;transition:border-color .2s,color .2s; } .bx-lang-btn:hover{border-color:rgba(248,244,238,.55);color:#fff} .bx-lang-dd{position:absolute;top:calc(100% + 8px);right:0;background:#0D1B2A;border:1px solid rgba(248,244,238,.12);border-radius:12px;padding:6px;min-width:140px;box-shadow:0 16px 40px rgba(0,0,0,.5);z-index:300;} .bx-lang-item{display:block;width:100%;background:none;border:none;cursor:pointer;text-align:left;padding:9px 14px;border-radius:8px;font-size:13px;font-weight:500;color:rgba(248,244,238,.75);transition:background .15s,color .15s;} .bx-lang-item:hover,.bx-lang-item.active{background:rgba(248,244,238,.08);color:#fff} @media(max-width:768px){ .bx-nav-bar{padding:16px 20px!important} .bx-nav-desktop{display:none!important} .bx-hamburger{display:flex!important} } `; document.head.appendChild(s); } const BX = window.BX; const NAVY = BX.navy, ORANGE = BX.orange; const body = '"Inter", system-ui, sans-serif'; // ── useLang hook ─────────────────────────────────────────────── function useLang() { const [, rerender] = useState(0); useEffect(() => { const h = () => rerender(n => n + 1); window.addEventListener('langchange', h); return () => window.removeEventListener('langchange', h); }, []); return window.getLang ? window.getLang() : 'es'; } // ── LangPicker ───────────────────────────────────────────────── function LangPicker() { const [open, setOpen] = useState(false); const ref = useRef(null); const lang = useLang(); const langs = window.SUPPORTED_LANGS || ['en','es','fr','pt']; useEffect(() => { const close = (e) => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }; document.addEventListener('mousedown', close); return () => document.removeEventListener('mousedown', close); }, []); const labels = { en:'EN', es:'ES', fr:'FR', pt:'PT' }; const names = { en:'English', es:'Español', fr:'Français', pt:'Português' }; return (
{open && (
{langs.map(l => ( ))}
)}
); } // ── BXHeader ─────────────────────────────────────────────────── function BXHeader({ home = false }) { const [mOpen, setMOpen] = useState(false); const lang = useLang(); const base = home ? '' : 'index.html'; const link = (anchor) => `${base}${anchor}`; const T = window.t || ((k) => k); const links = [ [T('footer.nav_home'), 'index.html'], [T('footer.nav_about'), link('#quienes-somos')], [T('nav.contact'), link('#contacto')], ]; return ( <>
BRITXIA {/* Desktop nav */}
{links.map(([label, href]) => ( {label} ))} {T('nav.explore_brand')}
{/* Hamburger */}
{/* Mobile menu */} {mOpen && (
{links.map(([label, href]) => ( setMOpen(false)} style={{ textDecoration:'none', fontFamily:body, fontSize:24, fontWeight:500, color:'rgba(248,244,238,0.88)', letterSpacing:-.3 }}>{label} ))}
{(window.SUPPORTED_LANGS || ['en','es','fr','pt']).map(l => ( ))}
setMOpen(false)} style={{ textDecoration:'none', fontFamily:body, fontSize:16, fontWeight:600, color:NAVY, background:ORANGE, borderRadius:100, padding:'15px 40px', marginTop:8 }}> {T('nav.explore_brand')}
)} ); } window.BXHeader = BXHeader; })();