/* HLiD — Problem, Solution, AI Layer, Workflow sections */
/* ------------ SECTION EYEBROW ------------ */
function Eyebrow({ n, label }) {
return (
{n}
{label}
);
}
/* Minimal line icons — 1.5px stroke */
const Glyph = {
fragmented: (
),
manual: (
),
bottleneck: (
),
entry: (
),
};
/* ------------ 2. PROBLEM ------------ */
function Problem() {
const { t } = useT();
const items = [
[Glyph.fragmented, t('problem.1.t'), t('problem.1.b')],
[Glyph.manual, t('problem.2.t'), t('problem.2.b')],
[Glyph.bottleneck, t('problem.3.t'), t('problem.3.b')],
[Glyph.entry, t('problem.4.t'), t('problem.4.b')],
];
return (
{t('problem.h1.a')}
{t('problem.h1.b')}
{t('problem.lede')}
{items.map(([icon, title, body], i) => (
))}
);
}
/* ------------ 3. SOLUTION — PIPELINE ------------ */
function Solution() {
const { t } = useT();
const nodes = [
['01', t('solution.n1'), t('solution.n1.s')],
['02', t('solution.n2'), t('solution.n2.s')],
['03', t('solution.n3'), t('solution.n3.s')],
['04', t('solution.n4'), t('solution.n4.s')],
['05', t('solution.n5'), t('solution.n5.s')],
['06', t('solution.n6'), t('solution.n6.s')],
['07', t('solution.n7'), t('solution.n7.s')],
];
return (
{t('solution.h1')}
{/* Desktop — horizontal pipeline */}
{nodes.map(([n, title, sub], i) => (
))}
{/* Mobile — stacked */}
{nodes.map(([n, title, sub], i) => (
))}
);
}
/* ------------ 4. AI LAYER ------------ */
function AILayer() {
const { t } = useT();
const stats = [
['3–5×', t('ai.s1.label'), t('ai.s1.foot')],
['0', t('ai.s2.label'), t('ai.s2.foot')],
['24/7', t('ai.s3.label'), t('ai.s3.foot')],
];
return (
{t('ai.h1.a')}
{t('ai.h1.b')}
{stats.map(([big, label, foot], i) => (
))}
{t('ai.foot')}
{['Pixel-traceable', 'Human-in-the-loop', 'Monthly eval', 'Per-locale holdout'].map(x => (
{x}
))}
);
}
Object.assign(window, { Problem, Solution, AILayer, Eyebrow, Glyph });