const { Button, Icon, SectionLabel, Dialog } = window.BeTechnikDesignSystem_72fdfa;
function useRoute() {
const get = () => (location.hash.replace(/^#\/?/, '') || '').replace(/\/$/, '');
const [r, setR] = React.useState(get());
React.useEffect(() => { const f = () => { setR(get()); window.scrollTo(0, 0); }; addEventListener('hashchange', f); return () => removeEventListener('hashchange', f); }, []);
return r;
}
const href = p => '#/' + p;
const go = p => { location.hash = '/' + p; };
function useReveal() {
React.useEffect(() => {
const io = new IntersectionObserver(es => es.forEach(e => { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } }), { threshold: .12 });
const scan = () => document.querySelectorAll('.reveal:not(.in),.ticks:not(.in)').forEach(el => io.observe(el));
scan(); const t = setTimeout(scan, 300);
return () => { io.disconnect(); clearTimeout(t); };
});
}
function Arrow({ size = 16 }) { return ; }
// Crops a region of a 3000×1479 logo export. box = [x, y, w, h] in source px.
const LOGO = { color: R('logo_color') || 'assets/logos/be-technik-horizontal-color.png', white: R('logo_white') || 'assets/logos/be-technik-mono-white.png' };
const BOX = { lockup: [90, 135, 2860, 1120], mark: [255, 140, 2410, 800] };
function Logo({ kind = 'lockup', tone = 'color', height = 48, label = 'Be Technik', style }) {
const [x, y, w, h] = BOX[kind]; const s = height / h;
return ;
}
function Eyebrow({ n, children, color, rule }) {
return {children} ;
}
const NAV = [['about-us', 'About Us'], ['solutions', 'Solutions'], ['careers', 'Careers'], ['connect-with-us', 'Connect With Us'], ['request-a-quote', 'Request a Quote']];
function Header({ route }) {
const [open, setOpen] = React.useState(false);
const [scrolled, setScrolled] = React.useState(false);
React.useEffect(() => setOpen(false), [route]);
React.useEffect(() => { document.body.style.overflow = open ? 'hidden' : ''; }, [open]);
React.useEffect(() => { const f = () => setScrolled(scrollY > 40); f(); addEventListener('scroll', f, { passive: true }); return () => removeEventListener('scroll', f); }, []);
const on = k => route === k || route.startsWith(k + '/');
return ;
}
function Footer() {
const col = (t, items) =>
{t} {items.map(([p, l]) => {p === null ? {l} : /^(http|tel|mailto)/.test(p) ? {l} : {l} } )} ;
return
Engineering solutions around the way you manufacture.
} onClick={() => go('connect-with-us')}>Discuss Your Project
{col('Company', [['about-us', 'About Us'], ['about-us/how-we-do-business', 'How We Do Business'], ['about-us/engineering-a-stronger-future', 'Engineering a Stronger Future']])}
{col('Solutions', SOLUTIONS.slice(0, 8).map(s => ['solutions/' + s.slug, s.title]))}
{col('Careers', [['careers/grow-with-us', 'Grow With Us'], ['careers/how-we-hire', 'How We Hire'], ['careers/opportunities', 'Explore Opportunities'], ['careers/students-graduates', 'Students & Graduates'], ['careers/apply', 'Apply Now']])}
{col('Connect', [['connect-with-us', 'Connect With Us'], ['request-a-quote', 'Request a Quote'], ['tel:' + CONTACT.tel, CONTACT.phone], ['mailto:' + CONTACT.email, CONTACT.email], [null, CONTACT.addr1 + ', ' + CONTACT.addr2]])}
;
}
function Crumbs({ items }) {
return Home {items.map(([p, l]) => / {p ? {l} : {l} } )} ;
}
function PageHero({ crumbs, label, title, lead, img, alt, children }) {
return
{crumbs &&
}
{label &&
{label} }
{title}
{lead &&
{lead}
}
{children}
{img &&
}
;
}
function SecHead({ n, label, title, children }) {
return
{label}
{title}
{children &&
{children}
}
;
}
function More({ to, children }) { return {children} ; }
function CTABand({ kicker = "Let's engineer the next step", title = "Have a production challenge? Let's discuss it." }) {
return
{kicker}
{title}
} onClick={() => go('connect-with-us')}>Discuss Your Project go('request-a-quote')} style={{ color: '#fff' }}>Request a Quote
;
}
function Photo({ src, alt, ratio = '4/3', style }) {
return ;
}
Object.assign(window, { More, useRoute, href, go, useReveal, Arrow, Logo, Eyebrow, Header, Footer, Crumbs, PageHero, SecHead, CTABand, Photo });