// Reusable atoms (no-price version): cards, pills, tiles, slider. const SectionHead = ({ index, title, hint }) =>
{String(index).padStart(2, '0')}

{title}

{hint &&

{hint}

}
; const ChoiceCard = ({ active, onClick, icon, title, sub }) => ; const Pill = ({ active, onClick, children }) => ; const FeatureTile = ({ active, onClick, name, desc }) => ; const PagesSlider = ({ value, min, max, onChange, defaultIncluded }) => { const pct = (value - min) / (max - min) * 100; return (
{value} {pageWord(value)}
onChange(parseInt(e.target.value, 10))} />
{min} примерно нужно {max}+
); }; Object.assign(window, { SectionHead, ChoiceCard, Pill, FeatureTile, PagesSlider });