// price-table.jsx — the 2026 grille tarifaire: one block per family, one row per prestation.
function PriceRow({ item, last }) {
const [hover, setHover] = React.useState(false);
return (
setHover(true)} onMouseLeave={() => setHover(false)}
style={{
display: 'grid', gridTemplateColumns: '1fr 140px', gap: 24, alignItems: 'baseline',
padding: '20px 24px', borderBottom: last ? 'none' : `1px solid ${T.rule}`,
background: hover ? T.washi100 : 'transparent',
transition: 'background 150ms cubic-bezier(.2,.7,.3,1)',
}}>
);
}
function PriceTable({ families = FAMILIES }) {
return (
{families.map((f) => (
{f.kicker}
{f.ja}
{f.desc}
{f.name}
{f.items.map((it, i) =>
)}
))}
Prix indicatifs HT · Devis gratuit sous 24 h
Tarifs au 01/09/2026
);
}
function IncludedGrid({ onDark }) {
const fg = onDark ? '#E2D4B7' : T.mist;
const rule = onDark ? T.ruleD : T.rule;
return (
{INCLUDED.map((t, i) => (
{String(i + 1).padStart(2, '0')}
{t}
))}
);
}
Object.assign(window, { PriceTable, PriceRow, IncludedGrid });