// components.jsx — ImmiHub OS umbrella marketing site components
const IM = {
blue: '#4F9ED6', blueDeep: '#2B7AB8', sky: '#7BB8E2', ice: '#E8F2FA',
green: '#34B87C', mint: '#D4F0E3',
charcoal: '#1A2332', slate: '#4A5568', gray: '#8896A6',
warmWhite: '#FAFBFD', cloud: '#F2F5F8', mist: '#DFE4EA',
warnFg: '#E5A318', warnBg: '#FEF5E0',
dangerFg: '#D94F4F', dangerBg: '#FDE8E8',
};
const AUDIENCES = [
{
id: 'immigrant',
navLabel: 'Immigrant',
cardTitle: 'ImmiHub for Immigrants',
tag: 'Consumer app',
url: 'https://immihub.ai/',
desc: 'Secure document vault, deadline tracking and reminders for visa holders and their families.',
for: 'For H-1B, F-1, OPT & GC applicants',
bullets: ['Encrypted document vault', '90 / 60 / 30-day renewal reminders', 'Family profiles & dependents'],
accent: IM.blue,
},
{
id: 'employer',
navLabel: 'Employer',
cardTitle: 'ImmiHub for Employers',
tag: 'HR & compliance',
url: 'https://employers.immihub.ai/',
desc: 'Compliance, sponsorship tracking and HR tooling for teams hiring on H-1B and other work visas.',
for: 'For HR & global mobility teams',
bullets: ['Sponsorship pipeline', 'LCA & I-9 audit trail', 'Public access file, ready to print'],
accent: '#7A6BE8',
},
{
id: 'university',
navLabel: 'University (DSO)',
cardTitle: 'ImmiHub for Institutions',
tag: 'DSO portal',
url: 'https://dso.immihub.ai/',
desc: 'F-1 and J-1 compliance for international-student offices at universities and colleges.',
for: 'For international student offices',
bullets: ['SEVIS roster & batch actions', 'CPT / OPT approvals', 'Travel signature queue'],
accent: '#E8843C',
},
{
id: 'attorney',
navLabel: 'Attorney',
cardTitle: 'ImmiHub for Attorneys',
tag: 'Case management',
url: 'https://attorneys.immihub.ai/',
desc: 'Cases that arrive pre-organized — client intake, evidence binders and filing prep, built in.',
for: 'For immigration attorneys & firms',
bullets: ['Pre-organized client binders', 'Questionnaires auto-populate forms', 'Filing-ready evidence packets'],
accent: '#2B7AB8',
},
];
// ---------- Nav ----------
function AudienceDropdown({ open, setOpen }) {
const ref = React.useRef(null);
React.useEffect(() => {
function onDoc(e) { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }
document.addEventListener('mousedown', onDoc);
return () => document.removeEventListener('mousedown', onDoc);
}, [setOpen]);
return (
setOpen(!open)}
style={{
display: 'inline-flex', alignItems: 'center', gap: 8,
background: open ? IM.ice : 'transparent',
color: IM.charcoal,
border: `1px solid ${open ? IM.blue : IM.mist}`,
padding: '9px 14px 9px 16px', borderRadius: 999,
fontSize: 14, fontWeight: 500, cursor: 'pointer',
fontFamily: 'inherit',
transition: 'all 200ms cubic-bezier(0.2,0.8,0.2,1)',
}}
>
I'm a
…
{open && (
)}
);
}
function AudienceGlyph({ id, color }) {
const base = { width: 18, height: 18, viewBox: '0 0 24 24', fill: 'none', stroke: color, strokeWidth: 1.75, strokeLinecap: 'round', strokeLinejoin: 'round' };
if (id === 'immigrant') return ( );
if (id === 'employer') return ( );
if (id === 'university') return ( );
if (id === 'attorney') return ( );
return null;
}
function Nav() {
const [open, setOpen] = React.useState(false);
return (
OS
{[
{ l: 'Platform', href: '#platform' },
{ l: 'Products', href: '#products' },
{ l: 'Why an OS', href: '#why-os' },
{ l: 'Investors', href: '#investors' },
].map(n => (
{n.l}
))}
);
}
// ---------- Hero ----------
function Hero() {
return (
Introducing ImmiHub OS · Seed round open
The operating system for
US immigration.
One platform. Four tailored surfaces. A shared identity and document layer for every person,
employer, university and attorney in the immigration journey.
Built by immigrants, for immigrants
AES-256 encryption
Privacy first - we never sell your data
);
}
function Dot({ c }) {
return ;
}
// Hero visual: four surfaces stacked + connecting lines
function HeroShot() {
return (
{/* central hub */}
{/* connecting lines SVG */}
{/* diagonal lines from each corner card to center */}
{/* four corner cards */}
);
}
function SurfaceCorner({ pos, aud }) {
return (
);
}
// ---------- Stats strip ----------
const VISA_CATEGORIES = [
{
id: 'work', label: 'Work', sub: 'Employment-based',
stats: [
{ n: '780K+', l: 'H-1B holders', s: 'Active specialty occupation workers' },
{ n: '190K', l: 'L-1 transferees', s: 'Intra-company transfers' },
{ n: '110K', l: 'O-1 & EB-1A', s: 'Extraordinary ability' },
{ n: '85K', l: 'TN · E-3 · H-1B1', s: 'Treaty-based professionals' },
],
},
{
id: 'student', label: 'Student & exchange', sub: 'F-1 · J-1 · M-1',
stats: [
{ n: '1.1M', l: 'International students', s: 'F-1 enrolled, 2024–25' },
{ n: '340K', l: 'J-1 exchange visitors', s: 'Scholars, trainees, au pairs' },
{ n: '260K', l: 'OPT & STEM OPT', s: 'Post-completion work auth' },
{ n: '8,200', l: 'SEVP-certified schools', s: 'Authorized to enroll F/M' },
],
},
{
id: 'family', label: 'Family', sub: 'IR · F · K · V',
stats: [
{ n: '710K', l: 'Family-sponsored GCs', s: 'Issued per year, on average' },
{ n: '3.8M', l: 'Family backlog', s: 'Approved petitions awaiting visa' },
{ n: '45K', l: 'K-1 fiancé(e) visas', s: 'Issued annually' },
{ n: '220K', l: 'Spousal adjustments', s: 'I-485 filings per year' },
],
},
{
id: 'gc', label: 'Green card', sub: 'Adjustment & consular',
stats: [
{ n: '1.03M', l: 'LPRs added / year', s: 'New green cards issued' },
{ n: '9.6M', l: 'Total LPR population', s: 'Currently residing in US' },
{ n: '1.8M', l: 'Employment-based backlog', s: 'Indian & Chinese beneficiaries' },
{ n: '140K', l: 'EB-5 investors & family', s: 'Regional center program' },
],
},
{
id: 'humanitarian', label: 'Humanitarian', sub: 'Asylum · TPS · U · T',
stats: [
{ n: '1.1M', l: 'Asylum backlog', s: 'Pending affirmative cases' },
{ n: '860K', l: 'TPS beneficiaries', s: 'From 17 designated countries' },
{ n: '300K', l: 'U-visa waitlist', s: 'Victims of crime, capped at 10K/yr' },
{ n: '125K', l: 'Refugee admissions', s: 'FY2024 ceiling' },
],
},
];
function StatsStrip() {
const [cat, setCat] = React.useState('work');
const active = VISA_CATEGORIES.find(c => c.id === cat);
const totalTam = '6.8M+';
return (
The market, in one glance
Every visa category. One platform.
TAM
{totalTam}
people across all visa categories
{active.stats.map((s, i) => (
))}
{/* Toggle row */}
{VISA_CATEGORIES.map(c => {
const isActive = c.id === cat;
return (
setCat(c.id)}
style={{
flex: '1 1 120px',
display: 'flex', flexDirection: 'column', alignItems: 'flex-start', gap: 2,
padding: '10px 14px',
background: isActive ? IM.ice : 'transparent',
border: `1px solid ${isActive ? IM.blue + '55' : 'transparent'}`,
borderRadius: 8, cursor: 'pointer',
fontFamily: 'inherit', textAlign: 'left',
transition: 'all 200ms cubic-bezier(0.2,0.8,0.2,1)',
}}>
{c.label}
{c.sub}
);
})}
Sources: USCIS, DHS, DOS, SEVP annual reports & IIE Open Doors (2024).
);
}
// ---------- Market by audience — ranked leaderboards ----------
const AUDIENCE_MARKETS = {
immigrant: {
id: 'immigrant',
label: 'Immigrants',
accent: '#4F9ED6',
eyebrow: 'Immigrants',
title: 'Every visa holder, in every metro.',
body: (
<>Across work, study, family and humanitarian visas, roughly{' '}
46.2 million foreign-born residents live in the US today —
including 24.5M on some form of active visa or LPR status. ImmiHub for Immigrants keeps each person's
documents, deadlines and family profiles in one secure vault.>
),
stats: [
{ n: '46.2M', l: 'Foreign-born in US' },
{ n: '24.5M', l: 'Active visas / LPRs' },
{ n: '72%', l: 'Manage via spreadsheets' },
],
cta: 'Open the consumer app',
listTitle: 'Top US metros by immigrant population',
listMeta: '2024 · ACS 5-year',
columns: ['metro', 'state', 'count', 'share'],
rows: [
{ metro: 'New York–Newark', state: 'NY–NJ–PA', count: '5.80M', share: '29% of metro' },
{ metro: 'Los Angeles', state: 'CA', count: '4.55M', share: '34%' },
{ metro: 'Miami–Fort Lauderdale', state: 'FL', count: '2.85M', share: '45%' },
{ metro: 'San Francisco Bay', state: 'CA', count: '2.10M', share: '30%' },
{ metro: 'Houston', state: 'TX', count: '1.72M', share: '24%' },
{ metro: 'Chicago', state: 'IL', count: '1.64M', share: '18%' },
{ metro: 'Washington DC', state: 'DC–VA–MD', count: '1.48M', share: '23%' },
{ metro: 'Dallas–Fort Worth', state: 'TX', count: '1.40M', share: '18%' },
],
tail: '+ 380 more metros and every rural county',
},
employer: {
id: 'employer',
label: 'Employers',
accent: '#7A6BE8',
eyebrow: 'Employers',
title: 'Every US company that sponsors work visas.',
body: (
<>More than 53,000 employers filed at least one H-1B, L-1,
O-1 or PERM in the last fiscal year — from Amazon and Google down to 10-person startups. ImmiHub for
Employers is the compliance workbench for every HR, global-mobility and immigration-counsel team in this
cohort.>
),
stats: [
{ n: '53K', l: 'Visa-sponsoring firms' },
{ n: '$9.1B', l: 'Annual legal spend' },
{ n: '780K', l: 'H-1B workforce' },
],
cta: 'Explore the HR dashboard',
listTitle: 'Top H-1B sponsors by approvals',
listMeta: 'FY2024 · USCIS disclosure',
columns: ['name', 'industry', 'count', 'sub'],
rows: [
{ name: 'Amazon', industry: 'Cloud · retail', hq: 'Seattle, WA', count: '9,265', sub: 'initial + renewals' },
{ name: 'Cognizant', industry: 'IT services', hq: 'Teaneck, NJ', count: '6,321', sub: 'initial + renewals' },
{ name: 'Infosys', industry: 'IT services', hq: 'Bengaluru (US HQ Plano)', count: '5,917', sub: 'initial + renewals' },
{ name: 'Google', industry: 'Software · AI', hq: 'Mountain View, CA', count: '5,103', sub: 'initial + renewals' },
{ name: 'TCS', industry: 'IT services', hq: 'Mumbai (US HQ NYC)', count: '4,560', sub: 'initial + renewals' },
{ name: 'Meta', industry: 'Social · AR/VR', hq: 'Menlo Park, CA', count: '4,405', sub: 'initial + renewals' },
{ name: 'Microsoft', industry: 'Software · cloud', hq: 'Redmond, WA', count: '4,182', sub: 'initial + renewals' },
{ name: 'Apple', industry: 'Devices · services', hq: 'Cupertino, CA', count: '3,840', sub: 'initial + renewals' },
],
tail: '+ 52,000 more sponsoring firms across every industry',
},
institution: {
id: 'institution',
label: 'Institutions',
accent: '#E8843C',
eyebrow: 'Institutions',
title: 'Every US school sponsoring international students.',
body: (
<>More than 8,200 SEVP-certified institutions enroll F-1
and M-1 students today — from the Ivies to community colleges and language academies. ImmiHub for
Institutions gives each DSO team one compliance workbench for SEVIS, travel signatures, CPT/OPT and
status audits.>
),
stats: [
{ n: '8,200', l: 'SEVP schools' },
{ n: '1.1M', l: 'F-1 students' },
{ n: '$43.8B', l: 'Economic impact' },
],
cta: 'Explore the DSO portal',
listTitle: 'Top institutions by F-1 enrollment',
listMeta: '2024–25 · SEVIS',
columns: ['name', 'city', 'count', 'sub'],
rows: [
{ name: 'New York University', industry: 'Private research', hq: 'New York, NY', count: '27,200', sub: 'F-1 students' },
{ name: 'Northeastern University', industry: 'Private research', hq: 'Boston, MA', count: '21,100', sub: 'F-1 students' },
{ name: 'Columbia University', industry: 'Ivy · private', hq: 'New York, NY', count: '20,800', sub: 'F-1 students' },
{ name: 'University of Southern California', industry: 'Private research', hq: 'Los Angeles, CA', count: '17,500', sub: 'F-1 students' },
{ name: 'Arizona State University', industry: 'Public R1', hq: 'Tempe, AZ', count: '15,900', sub: 'F-1 students' },
{ name: 'Carnegie Mellon University', industry: 'Private research', hq: 'Pittsburgh, PA', count: '12,400', sub: 'F-1 students' },
{ name: 'Purdue University', industry: 'Public R1', hq: 'West Lafayette, IN', count: '11,100', sub: 'F-1 students' },
{ name: 'UC San Diego', industry: 'Public R1', hq: 'San Diego, CA', count: '10,800', sub: 'F-1 students' },
],
tail: '+ 8,192 more SEVP-certified institutions nationwide',
},
attorney: {
id: 'attorney',
label: 'Attorneys',
accent: '#2B7AB8',
eyebrow: 'Attorneys',
title: 'Every immigration law firm in practice.',
body: (
<>Roughly 15,400 immigration attorneys across 3,100
practicing firms — from Fragomen and Berry Appleman at the top, to solo shops in every state. ImmiHub
for Attorneys delivers pre-organized client binders, intake questionnaires and filing-ready evidence
packets from the shared vault.>
),
stats: [
{ n: '15.4K', l: 'Immigration attorneys' },
{ n: '3.1K', l: 'Practicing firms' },
{ n: '1.2M', l: 'Cases filed / year' },
],
cta: 'Explore the case workbench',
listTitle: 'Top immigration firms by case volume',
listMeta: '2024 · Law360 · AILA',
columns: ['name', 'practice', 'count', 'sub'],
rows: [
{ name: 'Fragomen Del Rey', industry: 'Business immigration · global', hq: 'New York, NY', count: '620+', sub: 'attorneys · 63 offices' },
{ name: 'Berry Appleman & Leiden', industry: 'Corporate · mobility', hq: 'Dallas, TX', count: '210+', sub: 'attorneys · 28 offices' },
{ name: 'Ogletree Deakins', industry: 'Labor & employment', hq: 'Atlanta, GA', count: '180+', sub: 'immigration-focused' },
{ name: 'Jackson Lewis', industry: 'Labor · immigration', hq: 'White Plains, NY', count: '130+', sub: 'immigration-focused' },
{ name: 'Envoy Global (Corporate)', industry: 'Tech-enabled corporate', hq: 'Chicago, IL', count: '120+', sub: 'attorneys' },
{ name: 'Seyfarth Shaw', industry: 'Full-service · immigration', hq: 'Chicago, IL', count: '95+', sub: 'immigration-focused' },
{ name: 'Klasko Immigration Law', industry: 'EB-5 · business immigration', hq: 'Philadelphia, PA', count: '85+', sub: 'attorneys' },
{ name: 'Erickson Immigration Group', industry: 'Corporate · family', hq: 'Arlington, VA', count: '70+', sub: 'attorneys' },
],
tail: '+ 3,090 more immigration firms across all 50 states',
},
};
const AUDIENCE_MARKET_ORDER = ['immigrant', 'employer', 'institution', 'attorney'];
function MarketByAudience() {
const [activeId, setActiveId] = React.useState('immigrant');
const active = AUDIENCE_MARKETS[activeId];
const AUDIENCE_BY_MARKET = { immigrant: 0, employer: 1, institution: 2, attorney: 3 };
const visitUrl = AUDIENCES[AUDIENCE_BY_MARKET[activeId]].url;
return (
{/* Header + tab switcher */}
Market by audience
A named, ranked market for each of the four surfaces.
{AUDIENCE_MARKET_ORDER.map(id => {
const m = AUDIENCE_MARKETS[id];
const isActive = id === activeId;
return (
setActiveId(id)}
style={{
display: 'inline-flex', alignItems: 'center', gap: 8,
padding: '9px 14px', borderRadius: 8,
border: 'none', cursor: 'pointer',
background: isActive ? '#fff' : 'transparent',
boxShadow: isActive ? '0 1px 3px rgba(26,35,50,0.08)' : 'none',
fontFamily: 'inherit', fontSize: 13, fontWeight: 500,
color: isActive ? IM.charcoal : IM.slate,
transition: 'all 200ms cubic-bezier(0.2,0.8,0.2,1)',
}}>
{m.label}
);
})}
{/* Left: intro + stats + CTA */}
{active.eyebrow}
{active.title}
{active.body}
{active.stats.map((s, i) => (
))}
{active.cta}
{/* Right: ranked list */}
{active.listTitle}
{active.listMeta}
{active.rows.map((r, i) => (
))}
{active.tail}
);
}
function MarketRow({ rank, row, audienceKey, accent }) {
// Determine primary + secondary text based on audience
let primary, secondary;
if (audienceKey === 'immigrant') { primary = row.metro; secondary = row.state; }
else { primary = row.name; secondary = row.industry || row.hq; }
const tertiary = row.hq && audienceKey !== 'immigrant' ? row.hq : null;
return (
{rank}
{primary}
{secondary}{tertiary ? · : null}
{tertiary && {tertiary} }
{row.count || row.share}
{row.sub || row.share || ''}
);
}
// ---------- Product cards ----------
function ProductCards() {
const [hover, setHover] = React.useState(null);
return (
One platform · Four surfaces
A dedicated surface for everyone in the journey.
Each product is purpose-built for its audience — but they all sit on one shared identity and
document layer. When an immigrant updates their I-797, their employer, DSO and attorney see it too.
{AUDIENCES.map((a, i) => {
const isHover = hover === i;
return (
setHover(i)} onMouseLeave={() => setHover(null)}
style={{
background: '#fff', border: `1px solid ${IM.mist}`,
borderRadius: 16, padding: 28,
textDecoration: 'none', color: 'inherit',
display: 'flex', flexDirection: 'column',
boxShadow: isHover
? '0 12px 32px rgba(26,35,50,0.08), 0 4px 8px rgba(26,35,50,0.04)'
: '0 1px 3px rgba(26,35,50,0.06), 0 1px 2px rgba(26,35,50,0.04)',
transition: 'all 200ms cubic-bezier(0.2,0.8,0.2,1)',
transform: isHover ? 'translateY(-2px)' : 'none',
}}
>
{a.tag}
{a.cardTitle}
{a.for}
{a.desc}
{a.bullets.map((b, j) => (
{b}
))}
);
})}
);
}
Object.assign(window, {
IM, AUDIENCES, VISA_CATEGORIES, AUDIENCE_MARKETS, AUDIENCE_MARKET_ORDER,
Nav, Hero, StatsStrip, ProductCards, MarketByAudience, MarketRow,
AudienceGlyph, Dot,
});