const { useState, useEffect, useRef } = React;
const NAV = [
['Home', 'index.html'],
['About', 'about.html'],
['How it works', 'how-it-works.html'],
];
const SOLUTIONS = [
['For Labour Contractors', 'Find requirements, bid, win work.', 'for-contractors.html'],
['For EPC & general contractors', 'Post requirements, compare bids, hire.', 'for-epcs.html'],
['For builders & developers', 'Run workforce procurement across projects.', 'for-builders.html'],
];
const NAV2 = [
['Resources', 'resources.html'],
['Contact', 'contact.html'],
];
function Icon({ n, size = 20 }) {
const r = useRef(null);
useEffect(() => { if (r.current && window.lucide) window.lucide.createIcons({ attrs: { width: size, height: size }, nameAttr: 'data-lucide', root: r.current }); });
return ;
}
function Logo({ dark }) {
return (
LT
Labour Tech
Digitizing India's construction workforce
);
}
function Nav({ page }) {
const [open, setOpen] = useState(false);
const [drawer, setDrawer] = useState(false);
const solOn = ['for-contractors.html', 'for-epcs.html', 'for-builders.html'].includes(page);
return (
{NAV.map(([t, h]) => - {t}
)}
- setOpen(true)} onMouseLeave={() => setOpen(false)}>
{open &&
{SOLUTIONS.map(([t, d, h]) =>
{t}{d})}
}
{NAV2.map(([t, h]) => - {t}
)}
{drawer && (
{[...NAV, ...SOLUTIONS.map(s => [s[0], s[2]]), ...NAV2, ['Log in', 'login.html'], ['Get started', 'get-started.html']].map(([t, h]) =>
setDrawer(false)}>{t})}
)}
);
}
const FOOT = [
['Platform', [['How it works', 'how-it-works.html'], ['Subscription', 'pricing.html'], ['Contractor discovery', 'for-epcs.html'], ['Bidding & comparison', 'for-builders.html'], ['Dashboard preview', 'dashboard.html']]],
['Who it is for', [['Labour Contractors', 'for-contractors.html'], ['EPC & general contractors', 'for-epcs.html'], ['Builders & developers', 'for-builders.html']]],
['Company', [['About Labour Tech', 'about.html'], ['Resources', 'resources.html'], ['Contact', 'contact.html'], ['Get started', 'get-started.html']]],
];
function Footer() {
return (
);
}
function PHero({ eyebrow, title, sub, ctas, center }) {
return (
{eyebrow &&
{eyebrow}}
{title}
{sub &&
{sub}
}
{ctas &&
{ctas.map(([t, h, v]) =>
{t})}
}
);
}
function SecTitle({ eyebrow, title, sub, center = true }) {
return (
{eyebrow &&
{eyebrow}}
{title}
{sub &&
{sub}
}
);
}
function Ticks({ items }) {
return {items.map((t, i) => - {typeof t === 'string' ? {t} : t}
)}
;
}
function Ph({ label, style }) {
return {label}
;
}
function CtaBand({ title, sub, primary = ['Post a requirement', 'get-started.html'], secondary = ['Book a demo', 'contact.html'] }) {
return (
);
}
function Page({ page, children }) {
useEffect(() => { if (window.lucide) window.lucide.createIcons(); });
return {children};
}
function LTMount(key, el) {
const host = document.getElementById('m-' + key);
if (host) { ReactDOM.createRoot(host).render(el); return; }
const root = document.getElementById('root');
if (root && !root.dataset.mounted) { root.dataset.mounted = '1'; ReactDOM.createRoot(root).render(el); }
}
const LT_LOCATIONS = ["Pune city","Pimpri-Chinchwad (PCMC)","Hinjawadi / Wakad","Baner / Balewadi","Kharadi / Wagholi","Hadapsar / Magarpatta","Ravet / Punawale","Chakan / Talegaon","Undri / NIBM","Alandi / Lonikand","Mulshi / Pirangut","Other location in Pune Metropolitan Region"];
Object.assign(window, { LT_LOCATIONS, LTMount, Icon, Logo, Nav, Footer, PHero, SecTitle, Ticks, Ph, CtaBand, Page, useState, useEffect, useRef });