/** * nav.js -- Shared navigation component for NEXUS AUTOPARTS * * Injects a consistent header/nav bar into
. * Auto-highlights the current page link based on window.location.pathname. * * The injected header includes a
slot * that pages can populate with additional header content (search bars, stats, etc.) * after this script runs. */ (function () { 'use strict'; var path = window.location.pathname; function isActive(href) { var h = href.replace(/\/+$/, '') || '/'; var p = path.replace(/\/+$/, '') || '/'; if (h === p) return true; if ((h === '/' || h === '/index.html') && (p === '/' || p === '/index.html')) return true; if ((h === '/admin.html' || h === '/admin') && (p === '/admin.html' || p === '/admin')) return true; if ((h === '/diagramas' || h === '/diagrams.html') && (p === '/diagramas' || p === '/diagrams.html')) return true; if ((h === '/customer-landing.html') && (p === '/customer-landing.html')) return true; if ((h === '/captura') && (p === '/captura')) return true; if ((h === '/pos') && (p === '/pos')) return true; if ((h === '/cuentas') && (p === '/cuentas')) return true; if ((h === '/tienda') && (p === '/tienda')) return true; if ((h === '/bodega') && (p === '/bodega')) return true; if ((h === '/demo' || h === '/demo.html') && (p === '/demo' || p === '/demo.html')) return true; return false; } var navLinks = [ { label: 'Demo', href: '/demo' }, { label: 'Tienda', href: '/tienda' }, { label: 'Cat\u00e1logo', href: '/index.html' }, { label: 'Captura', href: '/captura' }, { label: 'POS', href: '/pos' }, { label: 'Cuentas', href: '/cuentas' }, { label: 'Bodega', href: '/bodega' }, { label: 'Admin', href: '/admin' } ]; var linksHTML = navLinks.map(function (link) { var baseStyle = 'text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: color 0.2s;'; if (isActive(link.href)) { baseStyle += ' color: var(--accent);'; } else { baseStyle += ' color: var(--text-secondary);'; } return '' + link.label + ''; }).join(''); var html = '' + '
' + '
' // Logo + '' + '
\u2699\uFE0F
' + 'NEXUS AUTOPARTS' + '
' // Slot for extra page-specific content (search bars, stats, etc.) + '
' // Nav links + '' // Auth section + '' + '
' + '
'; var target = document.getElementById('shared-nav'); if (target) { target.innerHTML = html; } // Auth state var token = localStorage.getItem('access_token'); if (token) { try { var payload = JSON.parse(atob(token.split('.')[1])); var nameEl = document.getElementById('nav-user-name'); var btnEl = document.getElementById('nav-auth-btn'); if (nameEl && payload.business_name) { nameEl.textContent = payload.business_name; } else if (nameEl) { nameEl.textContent = payload.role || ''; } if (btnEl) { btnEl.textContent = 'Salir'; btnEl.href = '#'; btnEl.onclick = function(e) { e.preventDefault(); localStorage.removeItem('access_token'); localStorage.removeItem('refresh_token'); window.location.href = '/login.html'; }; } } catch(e) {} } })();