// Clean Pop, part 1: nav, hero, marquee, manifesto, services, about // Top 8 from her Acuity menu, prices match Acuity const cpServices = [ ['The big chop + relaxer','With relaxer · fresh start','Relaxer','$250'], ['The big chop','No relaxer · fresh start','Cut','$225'], ['Cut + style','Precision cut, styled to finish','Cut','$125'], ['Waves','Sculpted and laid','Style','$95'], ['Silk Press','No relaxer · silky straight','Style','$100'], ['Wash + style','Cleanse, condition, finish','Style','$95'], ['Relaxer + style','Relaxer with a styled finish','Relaxer','$110'], ['Permanent color','Custom-mixed, long-lasting','Color','$175+'], ]; function CPWords({ text, delay = 0, step = 0.06 }) { return text.split(' ').map((w, i) => ( {w}{' '} )); } function CPNav() { return ( ); } function CPStylist() { const [ok, setOk] = React.useState(true); return ok ? the stylist setOk(false)} /> :
Stylist PNG cutoutSave as assets/stylist.png (transparent background)
; } function CPHero() { return (
Now booking fall ’26 · Cleveland Heights, OH

doll{' '}

Your whole appointment, start to finish. Cuts, color, silk presses and waves, all done with love.

Book your chair View menu
Started from the kitchen, now I'm here.
Chardae, owner
); } function CPMarquee() { const items = ['Cuts','Color','Waves','Gloss','Silk Press','Beauty','Correction','Pixies']; const row = [...items, ...items]; return ( ); } function CPManifesto() { const parts = [ ['Welcome to a hair salon that thinks', ''], ['two hours', 'pill'], ['with you is the', ''], ['whole point.', 'pink'], ['Shampoo included, always. No rotating stylist, no', ''], ['"is she almost done?"', 'mint'], ]; return (
The idea

{parts.map(([t, k], i) => k ? {t} : t.split(' ').map((w, j) => {w}) ).flat().reduce((a, el, i) => (i ? [...a, ' ', el] : [el]), [])}

{['No rush','No script','No judgment','Only good hair days'].map((t, i) => {t})}
); } function CPServices() { return ( ); } function CPAbout() { return (
Chardae, stylist and owner of the pixie dollhouse
The pixie herself
About

Made with love, scissors, and a strong wifi signal.

I'm Chardae. Every client gets treated with love and care. My assistant, Stevie, will give you the best shampoo you ever had, and when you sit in my chair, you'll see why you'll keep coming back.

{[['20 yrs','behind the chair'],['1','chair, all yours'],['12','services']].map(([n, l]) =>
{n}{l}
)}
); } Object.assign(window, { CPNav, CPHero, CPStylist, CPMarquee, CPManifesto, CPServices, CPAbout });