diff --git a/src/pages/Home.module.css b/src/pages/Home.module.css index 40ec143..d5f06a4 100644 --- a/src/pages/Home.module.css +++ b/src/pages/Home.module.css @@ -24,7 +24,7 @@ } .section { - padding: var(--space-xl) var(--space-lg); + padding: var(--space-lg) var(--space-lg); text-align: center; } @@ -41,6 +41,45 @@ margin-top: var(--space-lg); } +.aboutGrid { + display: flex; + align-items: center; + justify-content: center; + gap: var(--space-xl); + flex-wrap: wrap; + text-align: left; + max-width: 800px; + margin: 0 auto; +} + +.aboutGrid h2, +.aboutGrid p { + text-align: left; +} + +.portrait { + width: 220px; + height: 220px; + object-fit: cover; + border-radius: 8px; + flex-shrink: 0; +} + +.testimonial { + display: flex; + flex-direction: column; + align-items: center; + max-width: 260px; +} + +.avatar { + width: 56px; + height: 56px; + border-radius: 50%; + object-fit: cover; + margin-bottom: var(--space-sm); +} + .banner { background: var(--color-charcoal); color: var(--color-cream); diff --git a/src/pages/Home.test.tsx b/src/pages/Home.test.tsx index 6f28a22..367e863 100644 --- a/src/pages/Home.test.tsx +++ b/src/pages/Home.test.tsx @@ -37,4 +37,9 @@ describe('Home page', () => { await userEvent.click(screen.getByRole('button', { name: new RegExp(services[0].name) })) expect(screen.getByLabelText(/choose a date/i)).toBeInTheDocument() }) + + it('renders the About Mira portrait', () => { + renderHome() + expect(screen.getByRole('img', { name: /mira/i })).toBeInTheDocument() + }) }) diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index 9082d39..5081960 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -1,19 +1,23 @@ import { Link, useNavigate } from 'react-router-dom' +import { motion, useScroll, useTransform } from 'framer-motion' import Hero3DScene from '../components/Hero3DScene' import ScrollReveal from '../components/ScrollReveal' import ServiceCard from '../components/ServiceCard' +import ProductCard from '../components/ProductCard' import { services } from '../data/services' import { products } from '../data/products' import styles from './Home.module.css' const TESTIMONIALS = [ - { quote: 'Mira made me feel like royalty in her chair. My braids lasted 8 weeks!', author: 'Amara T.' }, - { quote: 'The most gentle, precise braider I have ever been to.', author: 'Keisha R.' }, - { quote: 'Booking was so easy and the results speak for themselves.', author: 'Nadia F.' }, + { quote: 'Mira made me feel like royalty in her chair. My braids lasted 8 weeks!', author: 'Amara T.', avatar: '/testimonials/amara.jpg' }, + { quote: 'The most gentle, precise braider I have ever been to.', author: 'Keisha R.', avatar: '/testimonials/keisha.jpg' }, + { quote: 'Booking was so easy and the results speak for themselves.', author: 'Nadia F.', avatar: '/testimonials/nadia.jpg' }, ] function Home() { const navigate = useNavigate() + const { scrollYProgress } = useScroll() + const portraitY = useTransform(scrollYProgress, [0, 1], [0, -40]) return (
- With over a decade behind the chair, Mira treats every install as an art form — - gentle on the scalp, precise at the root, and finished with a crown you'll want - to show off. -
++ With over a decade behind the chair, Mira treats every install as an art form — + gentle on the scalp, precise at the root, and finished with a crown you'll want + to show off. +
+{product.name}
-${product.price}
-Shop All
@@ -73,7 +84,8 @@ function Home() {++![]()
“{t.quote}”
{t.author}