// SolutionShell: reusable layout for all 5 solution deep-pages.
// Pages pass data (eyebrow, hero, problem, features, trust, pricing, faq, cta)
// and the shell renders the standard sections in the standard order.
const SolHero = ({ eyebrow, title, subtitle, ctaLabel, onCTA, mockup }) => (
{eyebrow.label}
{title}
{subtitle}
{ctaLabel}
{mockup}
);
const SolProblem = ({ title, lead, bullets, sting }) => (
{title}
{lead &&
{lead}
}
{bullets.map((b,i)=>(
))}
{sting && (
{sting}
)}
);
const SolFeatures = ({ kicker, title, items }) => (
{kicker && (
{kicker}
)}
{title}
);
const SolTrust = ({ title, items }) => (
);
const SolPricing = ({ title, plans, footnote }) => (
{title}
{plans.map((p,i)=>(
{p.tag}
{p.price}
{p.desc}
))}
{footnote && (
{footnote}
)}
);
const SolCompare = ({ title, columns, rows }) => (
{title}
{columns.map((c,i)=>(
{c.label}
))}
{rows.map((r,i)=>(
{r.label}
{r.values.map((v,j)=>(
{v}
))}
))}
);
const SolFaq = ({ items }) => {
const [open, setOpen] = React.useState(0);
return (
Häufige Fragen
{items.map((it,i)=>(
setOpen(open === i ? -1 : i)} style={{
width:'100%', textAlign:'left', background:'none', border:'none', padding: 0,
cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'space-between', gap: 16,
font:'600 17px/1.4 Roboto, sans-serif', color:'#0A0A0A',
}}>
{it.q}
{open === i && (
{it.a}
)}
))}
);
};
const SolCTA = ({ title, body, ctaLabel, onCTA, steps }) => (
{title}
{body &&
{body}
}
{steps && (
)}
{ctaLabel}
);
window.SolHero = SolHero;
window.SolProblem = SolProblem;
window.SolFeatures = SolFeatures;
window.SolTrust = SolTrust;
window.SolPricing = SolPricing;
window.SolCompare = SolCompare;
window.SolFaq = SolFaq;
window.SolCTA = SolCTA;